Python 绘图 Matplotlib 快速参考手册

    xiaoxiao2021-04-18  69

    http://www.labri.fr/perso/nrougier/teaching/matplotlib/#quick-references 1 作图函数 1.1 默认参数作图

    import numpy as np#导入numpy库 import matplotlib.pyplot as plt#导入matplotlib库 X = np.linspace(-np.pi, np.pi, 256, endpoint=True)#生成-π到+π的256个元素的等差数列 C,S = np.cos(X), np.sin(X)#生成x的正弦余弦函数并赋值给C,S plt.plot(X,C)#画出x与C的图像 plt.plot(X,S)#画出x与S的图像 plt.show()#展示图像

    1.2 改变颜色和线宽

    ... plt.figure(figsize=(10,6), dpi=80)#设置图表的宽高比为10:6,设置dpi为80 plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-")#设置余弦函数颜色为蓝色,线宽2.5,样式为连线 plt.plot(X, S, color="red", linewidth=2.5, linestyle="-") ...

    1.3 改变坐标轴刻度

    ... plt.xlim(X.min()*1.1, X.max()*1.1)#x坐标轴最小值、最大值分别设置为X最小值和最大值的1.1 plt.ylim(C.min()*1.1, C.max()*1.1)#y坐标轴最小值、最大值分别设置为X最小值和最大值的1.1 ...

    1.4 改变坐标轴刻度显示

    ... plt.xticks( [-np.pi, -np.pi/2, 0, np.pi/2, np.pi])#显示+-π,+-π/2的刻度 plt.yticks([-1, 0, +1])#显示+-1,0的刻度 ...

    ... plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])#设置将刻度映射为具体标签 plt.yticks([-1, 0, +1], [r'$-1$', r'$0$', r'$+1$'])#设置将刻度映射为具体标签 ...

    1.5 移动坐标轴

    ax = plt.gca() ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') ax.spines['bottom'].set_position(('data',0)) ax.yaxis.set_ticks_position('left') ax.spines['left'].set_position(('data',0))

    1.6 增加图例

    ... plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine") plt.plot(X, S, color="red", linewidth=2.5, linestyle="-", label="sine") plt.legend(loc='upper left', frameon=False) ...

    1.7 标记特殊点

    ... t = 2*np.pi/3#设置标记点为2/3π plt.plot([t,t],[0,np.cos(t)], color ='blue', linewidth=1.5, linestyle="--")#plot横纵坐标参数都是列表,可以画出面积图,这里画出的是一条竖线 plt.scatter([t,],[np.cos(t),], 50, color ='blue')#标记出点 plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$', xy=(t, np.sin(t)), xycoords='data', xytext=(-100, -40), textcoords='offset points', fontsize=16, arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))#标注,第一个参数是标注的内容,第二个参数是标注的点,第三个参数是坐标,第四个参数是注释的位移,第五个参数是注释坐标,第六个参数是箭头样式的设置,第七个参数是连接的样式 plt.plot([t,t],[0,np.sin(t)], color ='red', linewidth=1.5, linestyle="--") plt.scatter([t,],[np.sin(t),], 50, color ='red') plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$', xy=(t, np.cos(t)), xycoords='data', xytext=(-90, -50), textcoords='offset points', fontsize=16, arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2")) ...

    2 参数详细设置 2.1 窗口设置(fig)

    参数默认值描述num1作图窗口的个数figsizefigure.figsize宽高,单位英寸dpifigure.dpi分辨率facecolorfigure.facecolor背景颜色edgecolorfigure.edgecolor框线颜色frameonTRUE是否显示框线

    2.2.1 子图绘制(subplot) 你可以将一个画面分割成若干区域,然后分别在各个区域作画。你需要指明画面的行数和列数和作图的区域的数字代码(一般以横向排列) 2.2.2 比例子绘图(Axes) 类似于subplots,但是Axes允许将图片摆放在画板的任意位置。如果我们需要把一个小图放在一个大图的里面的话,就要选择Axes。 2.3 刻度(Tick) Matplotlib提供给了一个刻度的配置系统。刻度定位器可以设置哪些地方的刻度可以出现,还可以设置刻度的格式。 2.4 动画制作(Animation) 在matplotlib上进行动画制作一直是非常困难的事情。但是,自从1.1版本之后,动画制作就变得简单和直观了。 一个简单的雨滴效果图可以通过随机分布的环形获得,当然,它的大小是随着时间的变化而变化的。为了模仿这些,我们可以使用越来越透明的颜色来表示环形的增长。当环形增长到最大的时候,我们就可以去除这些环形,再从新建立起新的环形。 第一步,建立空的画板

    # New figure with white background fig = plt.figure(figsize=(6,6), facecolor='white') # New axis over the whole figure, no frame and a 1:1 aspect ratio ax = fig.add_axes([0,0,1,1], frameon=False, aspect=1)

    第二步,创建一些环形。我们可以使用散点图,并去除填充颜色。同样的我们需要设置初始的大小和颜色。

    # 环形的数量和大小 n = 50 size_min = 50 size_max = 50*50 # 环形的坐标 P = np.random.uniform(0,1,(n,2)) # 环形的颜色 C = np.ones((n,4)) * (0,0,0,1) # alpha颜色通道从 0 (透明) to 1 (不透明) C[:,3] = np.linspace(0,1,n) # 环形的大小 S = np.linspace(size_min, size_max, n) # 散点作图 scat = ax.scatter(P[:,0], P[:,1], s=S, lw = 0.5, edgecolors = C, facecolors='None') # 确定坐标轴是(0,1),去除刻度标签 ax.set_xlim(0,1), ax.set_xticks([]) ax.set_ylim(0,1), ax.set_yticks([])

    现在我们需要为我们的动画写更新函数,我们知道每一个环形需要变大,变透明,最后消失。当然,我们不是真正的去除这些环形,而是把它分配到另外的随机的地点。

    def update(frame): global P, C, S # 每一个环形都变得更加的透明 C[:,3] = np.maximum(0, C[:,3] - 1.0/n) # 每一个环形都变得更加大 S += (size_max - size_min) / n # 从新设置环形 i = frame % 50 P[i] = np.random.uniform(0,1,2) S[i] = size_min C[i,3] = 1 # 更新散点对象 scat.set_edgecolors(C) scat.set_sizes(S) scat.set_offsets(P) # 返回更新之后的对象 return scat,

    第三步,设置这个函数作为更新函数

    animation = FuncAnimation(fig, update, interval=10, blit=True, frames=200) # animation.save('rain.gif', writer='imagemagick', fps=30, dpi=40) plt.show()

    3.保存图片 3.1 保存为普通图片文件 3.2 保存为交互式图片文件 保存交互式图片页面

    import matplotlib.pyplot as plt import pickle as pl #调用matplotlib的figure对象 fig = plt.figure() x = [1,2,3,4,5] y = [1,2,3,4,5] plt.plot(x,y) #序列化figure对象,并保存 pl.dump(fig,open('C:/Users/Administrator/Desktop/fig.pickle','wb'))

    读取交互式页面:

    import matplotlib.pyplot as plt import pickle as pl # 载入序列化文件 fig = pl.load(open('C:/Users/Administrator/Desktop/fig.pickle','rb')) plt.show() # 获得图片信息 print(fig.axes[0].lines[0].get_data())

    原文链接: http://www.labri.fr/perso/nrougier/teaching/matplotlib/#introduction

    转载请注明原文地址: https://ju.6miu.com/read-675429.html

    最新回复(0)