参考:https://zhuanlan.zhihu.com/p/139052035;https://zhuanlan.zhihu.com/p/93423829;https://zhuanlan.zhihu.com/p/111108841
显示中文
import matplotlib as mpl
import matplotlib.pyplot as plt
# 用来正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
# 用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False
plt与axes
# plt
fig=plt.figure(num=1,figsize=(4,4))
plt.subplot(111)
plt.plot([1,2,3,4],[1,2,3,4])
plt.show()
# axes
fig=plt.figure(num=1,figsize=(4,4))
ax=fig.add_subplot(111)
ax.plot([1,2,3,4],[1,2,3,4])
plt.show()
- fig,生成一个画布,plt.subplot(111),将画布分为1x1的分布,并选中第一个子图进行操作。
- 虽然这样看着一样呢,但是后面修饰图片的时候,ax这个方式比plt的方式更加方便。
子图的创建
fig=plt.figure(num=1,figsize=(4,4))
ax1=fig.add_subplot(221)###可从图中看到,我们的画布是分为2x2的区域
ax1.plot([1,2,3,4],[1,2,3,4])
ax2=fig.add_subplot(222)
ax2.plot([1,2,3,4],[2,2,3,4])
ax3=fig.add_subplot(223)
ax3.plot([1,2,3,4],[1,2,2,4])
ax4=fig.add_subplot(224)
ax4.plot([1,2,3,4],[1,2,3,3])
plt.show()
也可以用如下方式创建子图:
# fig, ax = plt.subplots(2,1,figsize(14,7))
# ax[0].***
# ax[1].***
plt.title(‘’)
plt.xlabel(‘’), plt.ylabel(‘’)
plt.plot()
图例:plt.legends(labels=[], loc=’’)
- labels是图例的名称(能够覆盖在plt.plot( )中label参数值)
- loc用以控制图例在整个坐标平面的位置。
- 第一种:loc = ‘best’
图例自动‘安家’在一个坐标面内的数据图表最少的位置
- 第二种:loc = ‘XXX’
这里的’XXX’代表了坐标面中的九个位置,例如loc = ‘center’表示坐标平面中心位置,九种参数值及所对应位置如下图所示:
网格线:plt.grid()
plt.grid() # 显示网格线 1=True=默认显示;0=False=不显示
plt.grid(1) # 显示网格线
plt.grid(True) # 显示网格线
plt.grid(b=True) # 显示网格线
plt.grid(b=1) # 显示网格线
plt.grid(b=True, axis='x') #只显示x轴网格线
plt.grid(b=True, axis='y') #只显示y轴网格线
boilerplate
plt.plot()折线图
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
n = np.linspace(-5, 4, 30)
m1 = 3 * n + 2
m2 = n ** 2
plt.plot(n, m1, color='r', linewidth=1.5, linestyle='-')
plt.plot(n, m2, 'b')
plt.xlabel('时间')
plt.ylabel('心情')
plt.show()
plt.scatter()散点图
- c 点的颜色或颜色序列,默认蓝色。其它如c = ‘r’ (red); c = ‘g’ (green); c = ‘k’ (black) ; c = ‘y’(yellow)
- marker 形状,可选值,默认是圆:marker=’*’, marker=’x’,marker=’o’…
同一张图包含多个子图subplot
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 100)
#作图1
plt.subplot(221)
plt.plot(x, x)
#作图2
plt.subplot(222)
plt.plot(x, -x)
#作图3
plt.subplot(223)
plt.plot(x, x ** 2)
plt.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
#作图4
plt.subplot(224)
plt.plot(x, np.log(x))
plt.show()
Linux上作图
画完之后不用plt.plot()而是plt.savefig('xxx.jpg')
plt.figure()参数说明
figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
num:图像编号或名称,数字为编号 ,字符串为名称
figsize:指定figure的宽和高,单位为英寸;
dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张
facecolor:背景颜色
edgecolor:边框颜色
frameon:是否显示边框# 一般使用其中这俩参数,注意figsize是指定宽和高.
plt.figure(figsize=(20,10), dpi=80)
plt.plot()绘制折线图,并标注最大值
matplotlib.pyplot绘制多个折线图,并标注最大值和最小值