python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个包。基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数。于是,为了节省时间,可以一劳永逸。我把常用函数作了一个总结,最后写了一个例子,以后基本不用怎么改了。
一、作图流程:
1.准备数据, , 3作图, 4定制, 5保存, 6显示
1.数据可以是numpy数组,也可以是list
2创建画布:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import matplotlib.pyplot as plt #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:是否显示边 fig = plt.figure() fig = plt.figure(figsize = ( 8 , 6 ), dpi = 80 ) fig.add_axes() fig, axes = plt.subplos(nrows = 2 , ncols = 2 ) #axes是长度为4的列表 |
3、作图路线
一维数据:
1
2
3
4
5
6
7
8
9
10
11
|
axes[ 0 , 0 ].plot(x, y) axes[ 0 , 1 ].bar([ 1 , 2 , 3 ], [ 2 , 4 , 8 ]) axes[ 0 , 2 ].barh([ 1 , 2 , 3 ], [ 2 , 4 , 8 ]) axes[ 1 , 0 ].axhline( 0.45 ) axes[ 1 , 1 ].scatter(x, y) axes[ 1 , 2 ].axvline( 0.65 ) axes[ 2 , 0 ].fill(x,y, color = 'blue' ) axes[ 2 , 1 ].fill_between(x,y, color = 'blue' ) axes[ 2 , 2 ].violinplot(y) axes[ 0 , 3 ].arrow( 0 , 0 , 0.5 , 0.5 ) axes[ 1 , 3 ].quiver(x,y) |
4, 定制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
plt.plot(x,y, alpha = 0.4 , c = 'blue' , maker = 'o' ) #颜色,标记,透明度 # 显示数学文本 t = np.arange( 0.0 , 2.0 , 0.01 ) s = np.sin( 2 * np.pi * t) plt.plot(t,s) plt.title(r '$\alpha_i > \beta_i$' , fontsize = 20 ) plt.text( 1 , - 0.6 , r '$\sum_{i=0}^\infty x_i$' , fontsize = 20 ) plt.text( 0.6 , 0.6 , r '$\mathcal{A}\mathrm{sin}(2 \omega t)$' , fontsize = 20 ) plt.xlabel( 'time (s)' ) plt.ylabel( 'volts (mV)' ) fig = plt.figure() fig.suptitle( 'bold figure suptitle' , fontsize = 14 , fontweight = 'bold' ) ax = fig.add_subplot( 111 ) fig.subplots_adjust(top = 0.85 ) ax.set_title( 'axes title' ) ax.set_xlabel( 'xlabel' ) ax.set_ylabel( 'ylabel' ) ax.text( 3 , 8 , 'boxed italics text in data coords' , style = 'italic' , bbox = { 'facecolor' : 'red' , 'alpha' : 0.5 , 'pad' : 10 }) ax.text( 2 , 6 , r 'an equation: $E=mc^2$' , fontsize = 15 ) ax.text( 3 , 2 , u 'unicode: Institut f\374r Festk\366rperphysik' ) ax.text( 0.95 , 0.01 , 'colored text in axes coords' , verticalalignment = 'bottom' , horizontalalignment = 'right' , transform = ax.transAxes, color = 'green' , fontsize = 15 ) ax.plot([ 2 ], [ 1 ], 'o' ) # 注释 ax.annotate( '我是注释啦' , xy = ( 2 , 1 ), xytext = ( 3 , 4 ),color = 'r' ,size = 15 , arrowprops = dict (facecolor = 'g' , shrink = 0.05 )) ax.axis([ 0 , 10 , 0 , 10 ]) |
5, 保存显示
1
2
3
|
plt.savefig( "1.png" ) plt.savefig( "1.png" , trainsparent = True ) plt.show() |
二、部分函数使用详解:
1, fig.add_subplot(numrows, numcols, fignum) ####三个参数,分别代表子图的行数,列数,图索引号。 eg: ax = fig.add_subplot(2, 3, 1) (or ,ax = fig.add_subplot(231))
2, plt.subplots()使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
x = np.linspace( 0 , 2 * np.pi, 400 ) y = np.sin(x * * 2 ) fig, ax = plt.subplots() ax.plot(x, y) ax.set_title( 'Simple plot' ) # Creates two subplots and unpacks the output array immediately #fig = plt.figure(figsize=(6,6)) f, (ax1, ax2) = plt.subplots( 1 , 2 , sharey = True ) ax1.plot(x, y) ax1.set_title( 'Sharing Y axis' ) ax2.scatter(x, y) # Creates four polar axes, and accesses them through the returned array fig, axes = plt.subplots( 2 , 2 , subplot_kw = dict (polar = True )) axes[ 0 , 0 ].plot(x, y) axes[ 1 , 1 ].scatter(x, y) # Share a X axis with each column of subplots plt.subplots( 2 , 2 , sharex = 'col' ) # Share a Y axis with each row of subplots plt.subplots( 2 , 2 , sharey = 'row' ) # Share both X and Y axes with all subplots plt.subplots( 2 , 2 , sharex = 'all' , sharey = 'all' ) # Note that this is the same as plt.subplots( 2 , 2 , sharex = True , sharey = True ) # Creates figure number 10 with a single subplot # and clears it if it already exists. fig, ax = plt.subplots(num = 10 , clear = True ) |
3.plt.legend()
1
2
3
|
plt.legend(loc = 'String or Number' , bbox_to_anchor = (num1, num2)) plt.legend(loc = 'upper center' , bbox_to_anchor ( 0.6 , 0.95 ),ncol = 3 ,fancybox = True ,shadow = True ) #bbox_to_anchor被赋予的二元组中,第一个数值用于控制legend的左右移动,值越大越向右边移动,第二个数值用于控制legend的上下移动,值越大,越向上移动 |
以上这篇python matplotlib中的subplot函数使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/MCANDML/article/details/80554176