python 通过 matplotlib 绘制矢量图
python 通过 matplotlib 绘制矢量图问题描述当遇到这种情况:需要通过代码和数据进行图片的绘制的时候,可以考虑使用 OriginPro 进行绘制,并且在很多情况下,OriginPro 都更加合适绘图,导出矢量图也比较方便。但是如果遇到一定要编写代码进行绘制图像的时候,并且希望导出矢量图的时候,可以考虑使用 matplotlib, 它提供了保存为 eps 格式图片的功能。数据集这里是以
问题描述
当遇到这种情况:需要通过代码和数据进行图片的绘制的时候,可以考虑使用 OriginPro 进行绘制,并且在很多情况下,OriginPro 都更加合适绘图,导出矢量图也比较方便。
但是如果遇到一定要编写代码进行绘制图像的时候,并且希望导出矢量图的时候,可以考虑使用 matplotlib, 它提供了保存为 eps 格式图片的功能。
数据集
这里是以时间序列数据为例,数据集是来自 https://github.com/NetManAIOps/donut ,其中的 sample_data
中的 cpu4.csv
文件,这里为了方便提供一个蓝奏云的下载地址:
https://smileyan.lanzouo.com/iS22Mmpqymj
代码
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('cpu4.csv')
# 分别拿到时间戳与值
values = data['value'].values
timestamps = data['timestamp'].values
# 为了避免数据太多可以考虑展现其中一部分
pieceSize = 4
showPiece = 1 # [1,pieceSize]
# 开始准备绘制
plt.figure(num='cpu4',figsize=(10,8))
plt.title('cpu4-'+str(showPiece))
start = int(len(timestamps)*(showPiece/pieceSize))
end = int(len(timestamps)*((showPiece+1)/pieceSize))
plt.plot(timestamps[start:end], values[start:end],color="BLACK")
# plt.show()
# 如果不展示而是导出为 eps 文件,非常简单
plt.savefig('cpu4-'+str(showPiece)+'.eps',format='eps',bbox_inches = 'tight')
导出图片之后,同样会显示这张图片,如下:
并且可以找到这个导出的 cpu4-1.eps
图片。
如果希望能够快速查看 eps 矢量图片的话,推荐安装 AdobeAcrobat
下载
通过这个软件打开后,默认会转换成 pdf 的格式(下面这张图与上面不同)。
重要补充 如果想生成 svg 格式的矢量图也是一模一样的操作,即
plt.savefig('cpu4-'+str(showPiece)+'.svg',format='svg',bbox_inches = 'tight')
论文绘图工具 OriginPro & Python
这个必须从个人爱好出发,并且最好二者都了解有效。
对于很多熟练使用 OriginPro 的人来说,使用 Python 绘图太 low 了,其实不然。Python 同样可以绘制很漂亮的图片,特别是当用户熟悉 python 以及那些绘图库的时候。
并且 Python 以及那些库是免费的,是非常容易查到资料的。
但是对于不熟悉 Python 的用户而言,建议不要浪费时间只是为了绘图专门去学习 Python——因为 OriginPro 确实好用,鼠标点点就可以修改样式是最方便的一点。而且可以绘制很多非常专业的图片。
总而言之一定需要结合实际情况选择相应的工具,工具永远只是工具,都具有各自的特点。没有绝对的好与坏。
总结
需要注意的是,在导出 eps 图片的时候,不要指定像素参数,因为那样可能导致图片中文字部分太小而不适合整张图片的效果。
另外,如果需要其他效果,也应该通过编写代码的方式,进行绘制。直接去修改 eps 可能比较麻烦。
2021.3.9 13:44

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)