计算机顶会的图片都非常非常的好看,如果画出非常好看的图片呢?本文提供简单的方式来快速绘制图片。
强烈推荐你使用我提供的云环境【Aistudio】,能避免环境配置的问题
最终效果如下所示:
使用的数据集是一个Excel文件
具体内容如下图所示:
- 首先我们进行导入需要的库
1
2
3
4
|
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.read_excel("数据.xlsx")
|
- 设置我们绘图的风格
1
2
3
4
5
|
# 全部的线段风格
styles = ['c:s','y:8','r:^','r:v','g:D','m:X','b:p',':>'] # 其他可用风格 ':<',':H','k:o','k:*','k:*','k:*'
# 获取全部的图例
columns = [i[:-2] for i in data.columns]
n,m = data.shape
|
- 正式进行绘图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
plt.figure(figsize=(10,7))
# 设置字体
plt.rcParams["font.family"] = "Times New Roman"
plt.rcParams.update({'font.size': 22})
plt.rc('legend', fontsize=15)
# 正式的进行画图
for i in range(0,m,2):
i_data = data.iloc[:,i:i+2]
x,y = i_data.values[:,0], i_data.values[:,1]
plt.plot(x,y, styles[i // 2], markersize=8,label=columns[i])
# 设置图片的x,y轴的限制,和对应的标签
plt.xlim([0,300])
plt.ylim([60,78])
plt.xlabel("GFLOPs/Video")
plt.ylabel("mAP(%)")
# 设置图片的方格线和图例
plt.grid()
plt.legend(loc='lower right',framealpha=0.7)
plt.tight_layout()
# plt.show()
# 如果想保存图片,请把plt.show注释掉,然后把下面这行代码打开注释
plt.savefig("img.png",dpi=800)
|
- Linux添加Time New Roman字体
运行如下代码后,重启一下jupyter即可
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 查找字体的实际地址和缓存地址
import matplotlib
address = "/".join(matplotlib.matplotlib_fname().split('/')[:-1]) + "/fonts/ttf/"
cache = matplotlib.get_cachedir()
print("字体的实际地址是:", address)
print("字体的缓存地址是:", cache)
# 给整个系统添加Times New roman字体
import os
os.system(f"cp times.ttf {address}")
os.system(f"mv {cache} {cache}_backup")
print("Times New Roman字体已经添加成功")
|
- 颜色样式不够丰富呀
这个博客中有大量的Matplotlib样式
示例数据放在了百度云盘,链接:https://pan.baidu.com/s/1SYUpi8F1fzSwJgzSS6isXA 提取码:n2eh
如果我后续还画了什么好图,继续会放在这里!
每个不曾起舞的日子,都是对生命的辜负!与君共勉