python 论文图形绘制大全

图片绘制的基本要素

1. 类型

柱形图(方向)
折线图(最新的折线图构建)
CDF图,散点图

2. 注意点

配色
坐标轴
字体
线条粗细

3. 几类库函数

matplotlib
seaborn
Tableau软件的官网

4. 几类操作

python绘图总结之坐标轴及刻度
python matplotlib 图像可视化 一 (论文画图参考)
Python-matplotlib绘制带箭头x-y坐标轴图形
python中matplotlib的颜色及线条控制【以及改变legend字体大小】

5. 代码
  • 条形图
import os
os.environ["TF_CPP_MIN_LOG_LEVEL"] = '3'
from pylab import *
from matplotlib.backends.backend_pdf import PdfPages
plt.rcParams['font.sans-serif'] = ['Times New Roman']  # 修改默认字体
plt.rcParams['axes.unicode_minus'] = False
A='#b2182b'   # 颜色搭配
B='#ef8a62'
C='#fddbc7'
D='#d1e5f0'
E='#67a9cf'
F='#2166ac'
pdf = PdfPages('./monitor/1.pdf')   # 保存为pdf
fig = plt.figure()
plt.bar([1, 3.8, 6.8], [14.31/58.24, 11.39/51.82, 18.32/53.53], width=0.38, label='A', color=A)
plt.bar([1.4, 4.2, 7.2], [42.05/58.24, 31.32/51.82, 35.43/53.53], width=0.38, label='B',color=B)
plt.bar([1.8, 4.6, 7.6], [24.72/58.24, 19.32/51.82, 29.91/53.53], width=0.38, label='C', color=C)
plt.bar([2.2, 5.0, 8.0], [31.29/58.24, 23.25/51.82, 31.37/53.53], width=0.38, label='D', color=D)
plt.bar([2.6, 5.4, 8.4], [38.82/58.24, 33.98/51.82, 37.05/53.53], width=0.38, label='E', color=E)
plt.bar([3.0, 5.8, 8.8], [58.24/58.24, 51.82/51.82, 53.53/53.53], width=0.38, label='F', color=F)
font1 = {'family': 'Times New Roman', 'weight': 'normal', 'size': 12}  # 设置字体
plt.legend(loc=0, bbox_to_anchor=(0, 1, 1, 0), borderaxespad=0, ncol=3, mode='expand', prop=font1)   
# 设置legend,bbox的前2维为左下角的坐标,第2维为右下角的坐标,ncol为列数
plt.ylabel('Normalized average QoE', font1)
plt.tick_params(labelsize=12)   # 设置坐标轴中坐标的字体大小
plt.xticks([2, 4.8, 7.8], ['r', 'g', 's'])   # 修改坐标
plt.show()
pdf.savefig(fig)
pdf.close()
  • CDF图
import mpl_toolkits.axisartist as axisartist
import matplotlib.pyplot as plt
import numpy as np
#创建画布
fig = plt.figure(figsize=(6, 4))
# plt.axis('off')
font2 = {'family': 'Times New Roman', 'weight': 'normal', 'size': 12}
# 使用axisartist.Subplot方法创建一个绘图区对象ax
ax = axisartist.Subplot(fig,111)
#将绘图区对象添加到画布中
#这样做最大的缺陷就是只能通过ax进行参数大小,颜色,字体修正,但是不是很全,导致很多参数不能正确处理
fig.add_axes(ax)
ax.axis['top','right'].set_visible(False) #隐藏坐标轴
ax.axis["bottom"] = ax.new_floating_axis(0, 0) #新建坐标轴
ax.axis['bottom'].set_axisline_style("-|>", size = 1.0) #设置箭头
ax.axis["left"] = ax.new_floating_axis(1, 1.2)
ax.axis["left"].set_axisline_style("-|>", size = 1.0)
ax.axis["left"].set_axis_direction("left")  # 设置坐标的方向
ax.axis["bottom"].set_axis_direction("bottom")
ax.set_xlabel('Average QoE', font2) # 设置标签
ax.set_ylabel('CDF', font2)

filename = '8.csv' #CSV文件路径
lines = []
with open(filename,'r') as f:
    lines = f.read().split('\n')

dataSets = [[],[],[],[]]

for line in lines:
    # print(line.split(',')[0])
    try:
        dataSets[0].append(line.split(',')[0])
        dataSets[1].append(line.split(',')[1])
        dataSets[2].append(line.split(',')[2])
        dataSets[3].append(line.split(',')[3])
    except :
        print("Error: Exception Happened... \nPlease Check Your Data Format... ")
temp = []
for set in dataSets:
    temp2 = []
    for item in set:
        if item!='':
            temp2.append(float(item)/45.0)
    temp2.sort()
    temp.append(temp2)
dataSets = temp

plotDataset = [[], [], [], []]
for i in range(4):
    count = len(dataSets[i])
    for j in range(count):
        plotDataset[i].append((j+1)/count)

plt.plot(dataSets[0], plotDataset[0], '-', linewidth=1)
plt.plot(dataSets[1], plotDataset[1], '-', linewidth=1)
plt.plot(dataSets[2], plotDataset[2], '-', linewidth=1)
plt.plot(dataSets[3], plotDataset[3], '-', linewidth=1)

font1 = {'family': 'Times New Roman', 'weight': 'normal'}
plt.axis([2.5, 3.7, 0, 1])
plt.xlabel('Average QoE', font2)
plt.ylabel('CDF', font2)
_ = plt.legend(('A', 'B', 'C', 'D'), loc='upper left', frameon=False, prop=font1)
plt.show()

转载请注明出处

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值