Matplotlib简介和pyplot的简单使用
最近要花一些图,本来是打算用matlab的,但是matlab有时候莫名其妙的挂掉,忍受不了,便找到了matplotlib。我熟悉并且喜欢Python,所以matplotlib替代了matlab。
使用了几天,感觉还好,不过觉得文档不够全,网页版的有些链接打不开,pdf版本内容也就那么多,很多想找的内容都找不到,于是去看源码。下面整理一些使用心得。主要是用到matplotlib里面的pyplot和与其相关的。
先看简单的,画一张简单的函数曲线图,
#导入pyplot,文档里面的例子通常将其别名为plt import matplotlib.pyplot as plt #创建一幅图 plt.figure() #画出曲线 plt.plot(x,y) #显示 plt.show()
通常,除了要把曲线显示出来,还会有其他的要求,比如坐标轴的标注,图的大小,标题,图例,画多条曲线在一张图里,画多张子图在一张图里,类似与matlab里面的subplot,等。下面一点一点的介绍。
首先看plt.figure(),这个是创建一幅图,可以没有参数,但是,也可以有参数,可以直接看源码的参数说明,
figsize=(width,height) #这个指定图的大小,单位好像是inch,
dpi # dot per inch,像素密度,是不是就是类似于iphone显示屏的ppi,视网膜屏的ppi要求在,326ppi,在960x640的3.5寸屏上。
还有其他参数。
这里是用plt调用figure(),没有保存其返回值,这个函数是有返回值的,返回一个什么什么Figure对象,
再看plt.plot(x,y),这个将数据画成曲线,显示,x就对应横坐标,y对应纵坐标,x,y都是一个一维的list,这个是很好理解的。
plot除了需要x,y这两个参数,还可以有其他参数,比如,指定线的样式,可以是虚线,点线,还有颜色,线的宽度,这些可以使用关键字参数指定。还有一个,这里可以指定label,这个label可以用来作图例的文字。
最后是plt.show(),这个就是把图像显示出来,好像没什么好说的。
关于标注和标题
由于只是一幅图,比较好指定,plt.xlabel(text),plt.ylabel(text),plt.title(text),还可以制定字体大小,使用关键字参数fontsize=16,补充一点就是公式的输入,它支持latex格式的公式输入,就是两个$中间写latex的公式,保证字符串是raw格式,这个还是很好用的。有一个在线的latex公式编辑测试,很好用的,给出链接,http://www.codecogs.com/latex/eqneditor.php
关于坐标轴范围,
通过plt.axis([xmin xmax ymin ymax]指定,
关于网格,plt.grid(True),就可以显示网格。
关于图例,如果在画曲线的时候制定了label,那么图例也是很简单的,plt.legend()就可以了。在matplotlib里面。有专门的一个legend的类,还很复杂的,暂时不深究了。
关于画多条曲线,在matlab里面要使用hold on,这个好像不需要,直接继续plt.plot(x,y)就可以了。
下面看个完整的例子。
import numpy as np import matplotlib.pyplot as plt def f1(t): return np.exp(-t)*np.cos(2*np.pi*t) def f2(t): return np.sin(2*np.pi*t)*np.cos(3*np.pi*t) t = np.arange(0.0,5.0,0.02) plt.figure() plt.plot(t,f1(t),"g-",label="$f(t)=e^{-t} \cdot \cos (2 \pi t)$") plt.plot(t,f2(t),"r-.",label="$g(t)=\sin (2 \pi t) \cos (3 \pi t)$",linewidth=2) plt.axis([0.0,5.01,-1.0,1.5]) plt.xlabel("t") plt.ylabel("v") plt.title("a simple example") plt.grid(True) plt.legend() plt.show()
画图结果如下,
这只是很简单的一种情况,其他的情况,比如两个y轴,多个子图,子图的标题,不标准的子图布局,等,见后面的更新。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述