快速绘制漂亮折线图

快速绘制漂亮折线图

计算机顶会的图片都非常非常的好看,如果画出非常好看的图片呢?本文提供简单的方式来快速绘制图片。

折线图

强烈推荐你使用我提供的云环境【Aistudio】,能避免环境配置的问题

最终效果如下所示: 最终效果 使用的数据集是一个Excel文件 具体内容如下图所示: 在这里插入图片描述

代码实现

  1. 首先我们进行导入需要的库
1
2
3
4
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.read_excel("数据.xlsx")
  1. 设置我们绘图的风格
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. 正式进行绘图
 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)

Q & A

  1. 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字体已经添加成功")
  1. 颜色样式不够丰富呀 这个博客中有大量的Matplotlib样式

示例数据放在了百度云盘,链接:https://pan.baidu.com/s/1SYUpi8F1fzSwJgzSS6isXA 提取码:n2eh

如果我后续还画了什么好图,继续会放在这里!

每个不曾起舞的日子,都是对生命的辜负!与君共勉

updatedupdated2022-07-102022-07-10