1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python Matplotlib画图基础介绍

Python Matplotlib画图基础介绍

时间:2020-08-11 19:06:02

相关推荐

Python Matplotlib画图基础介绍

文章目录

Matplotlib第一个简单的图形坐标轴控制,标题打上文字标注,公式一个图中画多张子图大小不一的多张子图散点图柱状图plt.rcParams参数设置详细颜色字母对照表参考资料

Matplotlib 是 Python 中最常用的一个绘图库,主要用于绘制各种图形,包括散点图、柱状图、3D图、等高线图等等。在做研究过程中肯定会经常用,本文做一个简单的入门介绍,也给出极佳的参考手册,以备查用。内容主要参考了[1]的内容,我自己用jupyter notebook实现了一遍,我会给出所有源码的文件。

重点推荐:/gallery.html

该网页中收录了大量Matplotlib图形实例源码,基本上按需找到适当修改一下就行了,很棒!

除了Matplotlib之外再推荐一个高级统计画图工具:seaborn: statistical data visualization

Matplotlib第一个简单的图形

%matplotlib inlineimport numpy as npimport matplotlib.pyplot as pltplt.figure(0)X = np.random.normal(size=(12, 2))#plt.scatter(X[:, 0], X[:, 1])plt.plot(X[:,0],X[:,1],'mo') #m表示紫色,o表示小圆点,更多颜色见文末plt.show()

坐标轴控制,标题

# create a new figureplt.figure(1)x = np.linspace(0, 2 * np.pi, 50)y = np.sin(x)plt.plot(x, y,label="sin(x)")plt.plot(x, y * 2,label="2sin(x)")plt.title("sin(x) & 2sin(x)") # 图像上方的标题plt.xlim((0, np.pi*2)) # 横坐标的数值范围plt.ylim((-3, 3)) # 纵坐标的数值范围plt.xticks(np.linspace(0,np.pi*2,5)) # 认为指定在坐标轴上显示什么数字,我用linspace来画出5个值#plt.xticks((0, np.pi * 0.5, np.pi, np.pi * 1.5, np.pi * 2))plt.xlabel('XXX') # 标记横轴坐标名称plt.ylabel('YYY') # 标记纵轴坐标名称plt.legend(loc='upper right') # 标记标签,loc属性表示标签的位置,不写loc的话就是默认best,其他见下文plt.show()

legend loc参数选项:

颜色 表示方式

蓝色 b

绿色 g

红色 r

青色 c

品红 m

黄色 y

黑色 k

白色 w

点的类型 表示方式

点 .

像素 ,

圆 o

方形 s

三角形 ^

线的类型 表示方式

直线 -

虚线 –

点线 :

点划线 -

打上文字标注,公式

有时候我们需要对特定的点进行标注,我们可以使用 plt.annotate 函数来实现。这里我们要标注的点是(x0, y0) = (π, 0)。我们也可以使用 plt.text 函数来添加注释。

plt.plot(x, y)x0 = np.piy0 = 0# 画出标注点plt.scatter(x0, y0, s=50)plt.annotate('sin($\pi$)=%s' % y0, xy=(np.pi, 0), xycoords='data', xytext=(+30, -30),textcoords='offset points', fontsize=16,arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.2"))plt.text(0.5, -0.25, "$TEXTsin(\pi)=0$", fontdict={'size': 16, 'color': 'r'})plt.show()

代码中的$\pi$是公式,参考latex公式去写就行了,很方便

对于 annotate 函数的参数,做一个简单解释:

‘sin(np.pi)=%s’ % y0 代表标注的内容,可以通过字符串 %s 将 y0 的值传入字符串;

参数xycoords='data’是说基于数据的值来选位置;

xytext=(+30, -30) 和textcoords='offset points’表示对于标注位置的描述 和 xy 偏差值,即标注位置是 xy 位置向右移动 30,向下移动30;

arrowprops 是对图中箭头类型和箭头弧度的设置,需要用 dict 形式传入。

一个图中画多张子图

有时候我们需要将多张子图展示在一起,可以使用 subplot() 实现。即在调用 plot() 函数之前需要先调用 subplot() 函数。该函数的第一个参数代表子图的总行数,第二个参数代表子图的总列数,第三个参数代表活跃区域。

plt.figure(2)ax1 = plt.subplot(2, 2, 1) # (行,列,活跃区)plt.plot(x, np.sin(x), 'r+')ax2 = plt.subplot(2, 2, 2) # 独立的y轴plt.plot(x, 2 * np.sin(x), 'go')ax3 = plt.subplot(2, 2, 3)plt.plot(x, np.cos(x), '-b')ax4 = plt.subplot(2, 2, 4, sharey=ax3) # 与 ax3 共享y轴plt.plot(x, 2 * np.cos(x), 'y.')plt.show()

上面的 subplot(2, 2, x) 表示将图像窗口分为 2 行 2 列。x 表示当前子图所在的活跃区。

大小不一的多张子图

可以看到,上面的每个子图的大小都是一样的。有时候我们需要不同大小的子图。比如将上面第一张子图完全放置在第一行,其他的子图都放在第二行。

plt.figure(3)ax1 = plt.subplot(2, 1, 1) # (行,列,活跃区)plt.plot(x, np.sin(x), '-r+')ax2 = plt.subplot(2, 3, 4)plt.plot(x, 2 * np.sin(x), 'g')ax3 = plt.subplot(2, 3, 5, sharey=ax2)plt.plot(x, np.cos(x), 'b')ax4 = plt.subplot(2, 3, 6, sharey=ax2)plt.plot(x, 2 * np.cos(x), 'y')plt.show()

散点图

画一个炫炫的散点图:

k = 500x = np.random.rand(k) y = np.random.rand(k)size = np.random.rand(k) * 50 # 生成每个点的大小colour = np.arctan2(y, x) # 生成每个点的颜色大小plt.scatter(x, y, s=size, c=colour)plt.colorbar() # 添加颜色栏plt.show()

柱状图

常用的柱状图:

k = 10x = np.arange(k)y = np.random.rand(k)plt.bar(x, y) # 画出 x 和 y 的柱状图# 增加数值for x, y in zip(x, y):plt.text(x, y , '%.2f' % y, ha='center', va='bottom')plt.show()

plt.rcParams参数设置

plt(matplotlib.pyplot)使用rc配置文件来自定义图形的各种默认属性,称之为rc配置或rc参数。

通过rc参数可以修改默认的属性,包括窗体大小、每英寸的点数、线条宽度、颜色、样式、坐标轴、坐标和网络属性、文本、字体等。rc参数存储在字典变量中,通过字典的方式进行访问。[2]

详细颜色字母对照表

参考资料

[1] /p/c41ac57cea33

[2] /weixin_39010770/article/details/88200298

[3] Matplotlib可视化及应用

[4] /gallery.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。