matplotlib | seaborn
import matplotlib.pyplot as plt
import seaborn as sns
其他
布局
plt.tight_layout()
通常在绘制多个子图时使用,用于自动调整图形中的子图布局,以避免子图之间的重叠或太过拥挤
Property
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| color: rcolor = '#AA232E' bcolor = '#3C53A6'
plt.rcParams.update({'font.size': 24, 'font.family': 'Times New Roman'})
scatter: omega1, omega2, label='Target',s=140,marker='x',c=c1,alpha=alpha,linewidths=5 - alpha=0.7 - c1 = 'r' or 'b' label: fontsize=24,labelpad = 10,fontname='Times New Roman'
axs.tick_params(labelsize=22, pad=5) axs.grid(linewidth=1.5, linestyle='--')
plt.legend(loc='upper center',fontsize=26,ncol=4, bbox_to_anchor=(1.25, 1.25)) plt.subplots_adjust(wspace=0.3, hspace=0.3, left=0.07, right=0.98, top=0.92, bottom=0.1)
|
Seaborn
distplot
1 2 3 4 5
| import seaborn as sns
sns.distplot(prep_data, hist=False, kde=True, kde_kws={'linewidth': 5}, label='Original', color="red") sns.distplot(prep_data_hat, hist=False, kde=True, kde_kws={'linewidth': 5, 'linestyle':'--'}, label='Synthetic', color="blue")
|
Matplotlib
plt.clf 动态图片展示
1 2 3 4 5
| plt.clf()
plt.pause(0.01) plt.ioff()
|
plt.plot
format_string的内容



**kwargs
**kwards:
color 颜色
linestyle 线条样式
marker 标记风格
markerfacecolor 标记颜色
markersize 标记大小 等等
1 2 3 4
|
plt.plot([1,2,3,6],[4,5,8,1],'r-s') plt.show()
|
展示

plt.imshow
BGR 用 RGB 打开
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import numpy as np import cv2 from matplotlib import pyplot as plt
img=cv2.imread('lena.jpg',cv2.IMREAD_COLOR)
b,g,r=cv2.split(img) img2=cv2.merge([r,g,b]) plt.imshow(img2) plt.show()
img3=img[:,:,::-1] plt.imshow(img3) plt.show()
img4=cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.imshow(img4) plt.show()
|
定义画布大小,然后用 plot 画图
1 2 3 4 5 6
| fig1 = plt.figure(num='fig111111', figsize=(10, 3), dpi=75, facecolor='#FFFFFF', edgecolor='#0000FF')
plt.plot([1,2,3],[2,2,3]) plt.show() plt.close()
|

plt.subplot 子图
将 figure 设置的画布大小分成几个部分,参数‘221’表示 2(row)x2(colu),即将画布分成 2x2,两行两列的 4 块区域,1 表示选择图形输出的区域在第一块,图形输出区域参数必须在“行 x 列”范围,此处必须在 1 和 2 之间选择——如果参数设置为 subplot(111),则表示画布整个输出,不分割成小块区域,图形直接输出在整块画布上
1 2 3 4 5 6 7 8 9 10 11
| plt.subplot(222) plt.plot(y,xx) plt.show() plt.subplot(223) plt.plot(y,xx) plt.subplot(224) plt.plot(y,xx)
plt.add_subplot(221) plt.add_subplot(222)
|
plt.scatter
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None,alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs)
- x,y:表示的是大小为(n,)的数组,也就是我们即将绘制散点图的数据点
- s:是一个实数或者是一个数组大小为(n,),这个是一个可选的参数
- c:表示的是颜色,也是一个可选项。默认是蓝色’b’,表示的是标记的颜色,或者可以是一个表示颜色的字符,或者是一个长度为 n 的表示颜色的序列等等
- marker:表示的是标记的样式,默认的是’o’
- cmap:Colormap 实体或者是一个 colormap 的名字,cmap 仅仅当 c 是一个浮点数数组的时候才使用。如果没有申明就是 image.cmap
- norm:Normalize 实体来将数据亮度转化到 0-1 之间,也是只有 c 是一个浮点数的数组的时候才使用。如果没有申明,就是默认为 colors.Normalize
- vmin,vmax:实数,当 norm 存在的时候忽略。用来进行亮度数据的归一化
- alpha:实数,0-1 之间
- linewidths:也就是标记点的长度
参考教程
plt.hist
_可以将高斯函数这些画出来_
n, bins, patches = plt.hist(arr, bins=10, normed=0, facecolor='black', edgecolor='black',alpha=1,histtype='bar')
hist 的参数非常多,但常用的就这六个,只有第一个是必须的,后面四个可选
- arr: 需要计算直方图的一维数组
- bins: 直方图的柱数,可选项,默认为 10
- normed: 是否将得到的直方图向量归一化。默认为 0
- facecolor: 直方图颜色
- edgecolor: 直方图边框颜色
- alpha: 透明度
- histtype: 直方图类型,‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’
返回值 :
n: 直方图向量,是否归一化由参数 normed 设定
bins: 返回各个 bin 的区间范围
patches: 返回每个 bin 里面包含的数据,是一个 list
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| mu, sigma = 0, .1 s = np.random.normal(loc=mu, scale=sigma, size=1000) a,b,c = plt.hist(s, bins=3) print("a: ",a) print("b: ",b) print("c: ",c)
plt.show()
结果:
a: [ 85. 720. 195.] #每个柱子的值 b: [-0.36109509 -0.1357318 0.08963149 0.31499478] #每个柱的区间范围 c: <a list of 3 Patch objects> #总共多少柱子
|
Property
plt.xlim
1 2
| plt.xlim(0,1000) plt.ylim(0,20)
|
plt.xticks
1 2 3 4 5 6 7 8
| fig2 = plt.figure(num='fig222222', figsize=(6, 3), dpi=75, facecolor='#FFFFFF', edgecolor='#FF0000') plt.plot()
plt.xticks(np.linspace(0,1000,15,endpoint=True))
plt.yticks(np.linspace(0,20,10,endpoint=True)) plt.show() plt.close()
|
展示

ax2.set_title(‘xxx’)设置标题,画图
plt.xlabel() plt.ylabel()xy 轴标签
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| x = np.arange(1,10) y = x fig = plt.figure() ax1 = fig.add_subplot(221)
ax1.set_title('Scatter Plot1') plt.xlabel('M') plt.ylabel('N') ax2 = fig.add_subplot(222) ax2.set_title('Scatter Plot2clf')
plt.xlabel('X')
plt.ylabel('Y')
ax1.scatter(x,y,c = 'r',marker = 'o') ax2.scatter(x,y,c = 'b',marker = 'x')
plt.legend('show picture x1 ')
plt.show()
|
展示
