• matplotlib使用样例


      1 import matplotlib.pyplot as plt
      2 import numpy as np
      3 from mpl_toolkits.mplot3d import Axes3D
      4 import matplotlib.gridspec as gridspec
      5 from matplotlib import animation
      6 
      7 def drawLine():
      8     x=np.linspace(-1,1,50)
      9     y = 2 * x + 1
     10     #simple demo
     11     plt.figure()
     12     plt.plot(x,y)
     13     plt.show()
     14 
     15 def drawCurveLine():
     16     x=np.linspace(-3,3,50)
     17     y1=2*x+1
     18     y2=x**2
     19     plt.figure(num=3,figsize=(8,5))
     20     plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
     21     plt.plot(x,y2)
     22     plt.show()
     23 
     24 def drawCurveLine02():
     25     x = np.linspace(-3, 3, 50)
     26     y1 = 2 * x + 1
     27     y2 = x ** 2
     28     plt.figure(num=3, figsize=(8, 5))
     29     plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
     30     plt.plot(x, y2)
     31 
     32     #设置x,y轴坐标范围、坐标轴名称
     33     plt.xlim((-1, 2))
     34     plt.ylim((-2, 3))
     35     plt.xlabel('I am x')
     36     plt.ylabel('I am y')
     37     plt.show()
     38 
     39 def drawCurveLine03():
     40     x = np.linspace(-3, 3, 50)
     41     y1 = 2 * x + 1
     42     y2 = x ** 2
     43     plt.figure(num=3, figsize=(8, 5))
     44     plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
     45     plt.plot(x, y2)
     46 
     47     plt.xlim((-1, 2))
     48     plt.ylim((-2, 3))
     49     # 设置刻度名称
     50     plt.yticks([0,1,2],[r'$really bad$',r'$normal$',r'$good$'])
     51     plt.xlabel('I am x')
     52     plt.ylabel('I am y')
     53     plt.show()
     54 
     55 def drawCurveLine04():
     56     x = np.linspace(-3, 3, 50)
     57     y1 = 2 * x + 1
     58     y2 = x ** 2
     59     plt.figure(num=3, figsize=(8, 5))
     60     plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
     61     plt.plot(x, y2)
     62 
     63     plt.xlim((-1, 2))
     64     plt.ylim((-2, 3))
     65     plt.yticks([0,1,2],[r'$really bad$',r'$normal$',r'$good$'])
     66 
     67     # 设置边框颜色,默认是白色
     68     ax = plt.gca()
     69     ax.spines['right'].set_color('green')
     70     ax.spines['top'].set_color('green')
     71     plt.xlabel('I am x')
     72     plt.ylabel('I am y')
     73     plt.show()
     74 
     75 def drawCurveLine05():
     76     x = np.linspace(-3, 3, 50)
     77     y1 = 2 * x + 1
     78     y2 = x ** 2
     79     plt.figure(num=3, figsize=(8, 5))
     80     plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
     81     plt.plot(x, y2)
     82 
     83     plt.xlim((-1, 2))
     84     plt.ylim((-2, 3))
     85     plt.yticks([0,1,2],[r'$really bad$',r'$normal$',r'$good$'])
     86     ax = plt.gca()
     87     ax.spines['right'].set_color('none')
     88     ax.spines['top'].set_color('none')
     89     #设置刻度显示位置
     90     ax.xaxis.set_ticks_position('bottom')
     91     #设置spine-bottom位置
     92     ax.spines['bottom'].set_position(('data',0))
     93     ax.spines['left'].set_position(('data', 0))
     94 
     95     plt.xlabel('I am x')
     96     plt.ylabel('I am y')
     97     plt.show()
     98 
     99 def drawCurveLine06():
    100     x = np.linspace(-3, 3, 50)
    101     y1 = 2 * x + 1
    102     y2 = x ** 2
    103     plt.figure(num=3, figsize=(8, 5))
    104     plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--',label='linear line')
    105     plt.plot(x, y2,label='square line')
    106     #显示图例
    107     plt.legend(loc='upper right')
    108 
    109     plt.xlabel('x')
    110     plt.ylabel('y')
    111     plt.show()
    112 
    113 def drawCurveLine07():
    114     x = np.linspace(-3, 3, 50)
    115     y1 = 2 * x + 1
    116     y2 = x ** 2
    117     plt.figure(num=3, figsize=(8, 5))
    118     line1=plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
    119     line2=plt.plot(x, y2)
    120     plt.xlabel('x')
    121     plt.ylabel('y')
    122 
    123     #显示图例
    124     plt.legend(labels=['up','down'],loc='best')
    125     plt.show()
    126 
    127 def drawCurveLine08():
    128     x = np.linspace(-3, 3, 50)
    129     y = 2 * x + 1
    130     plt.figure(num=3, figsize=(8, 5))
    131     plt.plot(x, y)
    132     x0=1
    133     y0=2*x0+1
    134     plt.plot([x0,x0,],[0,y0,],'k--',linewidth=2.5)
    135     #plt.plot([1, 1, ], [0, 3, ], 'k--', linewidth=2.5)
    136     #标记点(1,3)
    137     plt.scatter([x0,],[y0,],s=50,color='b')
    138     #plt.scatter([1, ], [3, ], s=100, color='b')
    139     #标注点(1,3)
    140     plt.annotate(r'$2x+1=%s$'%y0,xy=(x0,y0),xycoords='data',xytext=(+30,-30),
    141                  textcoords='offset points',fontsize=16,
    142                  arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
    143 
    144     #添加注释text
    145     plt.text(-3,3,r'$This is the some text. musigma_ialpha_t$',fontdict={'size':'16','color':'r'})
    146     ax = plt.gca()
    147     ax.spines['right'].set_color('none')
    148     ax.spines['top'].set_color('none')
    149     ax.spines['left'].set_position(('data',0))
    150     ax.spines['bottom'].set_position(('data',0))
    151     plt.show()
    152 
    153 def drawCurveLine09():
    154     x = np.linspace(-3,3,50)
    155     y = 0.1*x
    156     plt.figure()
    157     # 在 plt 2.0.2 或更高的版本中, 设置 zorder 给 plot 在 z 轴方向排序
    158     plt.plot(x,y,linewidth=60,zorder=1)
    159 
    160     ax=plt.gca()
    161     ax.spines['right'].set_color('none')
    162     ax.spines['top'].set_color('none')
    163     ax.spines['left'].set_position(('data', 0))
    164     ax.spines['bottom'].set_position(('data', 0))
    165 
    166     for label in ax.get_xticklabels()+ax.get_yticklabels():
    167         #重新调节字体大小
    168         label.set_fontsize(12)
    169         #设置目的内容的透明度相关参,facecolor调节 box 前景色,edgecolor 设置边框, 本处设置边框为无,alpha设置透明度
    170         label.set_bbox(dict(facecolor='white',edgecolor='None',alpha=0.7,zorder=2))
    171     plt.show()
    172 
    173 #散点图
    174 def drawRandomPoint():
    175     n=1024
    176     x=np.random.normal(0,1,n)
    177     y=np.random.normal(0,1,n)
    178     t=np.arctan2(y,x)
    179 
    180     #x,y为位置,s是指size,c为颜色,alpha 为透明度
    181     plt.scatter(x,y,s=75,c=t,alpha=.5)
    182     plt.xlim(-1.5,1.5)
    183     plt.xticks(())#忽略(隐藏) xticks
    184     plt.ylim(-1.5,1.5)
    185     plt.yticks(())#忽略(隐藏) yticks
    186     plt.show()
    187 
    188 def drawBar():
    189     n=12
    190     x=np.arange(n)
    191     y1=(1-x/float(n))*np.random.uniform(0.5,1.0,n)
    192     y2=(1-x/float(n))*np.random.uniform(0.5,1.0,n)
    193 
    194     #画柱状图
    195     plt.bar(x,+y1,facecolor='#9999ff',edgecolor='white')
    196     plt.bar(x,-y2,facecolor='#ff9999',edgecolor='white')
    197     #添加文本
    198     for X,Y in zip(x,y1):
    199         plt.text(X,Y+0.1,'%.2f'%Y,ha='center',va='top')
    200     for X,Y in zip(x,y2):
    201         plt.text(X,-Y-0.1,'%.2f'%Y,ha='center',va='bottom')
    202     plt.xlim(-5,n)
    203     plt.xticks(())
    204     plt.ylim(-1.25,1.25)
    205     plt.yticks(())
    206     plt.show()
    207 
    208 def f(x,y):
    209     #the height function
    210     return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
    211 #等高线
    212 def drawContours():
    213     n=256
    214     x=np.linspace(-3,3,n)
    215     y=np.linspace(-3,3,n)
    216     #在二维平面中将每一个x和每一个y分别对应起来,编织成栅格
    217     X,Y=np.meshgrid(x,y)
    218     #使用函数plt.contourf把颜色加进去
    219     #位置参数分别为:X, Y, f(X,Y),透明度0.75,并将 f(X,Y) 的值对应到color map的暖色组中寻找对应颜色
    220     #8代表等高线的密集程度
    221     C=plt.contour(X,Y,f(X,Y),8,alpha=.75,cmap=plt.cm.hot)
    222 
    223     #添加高度数字
    224     plt.clabel(C,inline=True,fontsize=10)
    225     plt.xticks(())
    226     plt.yticks(())
    227     plt.show()
    228 
    229 #矩形图
    230 def drawMatrix():
    231     a = np.array([0.313660827978, 0.365348418405, 0.423733120134,
    232                   0.365348418405, 0.439599930621, 0.525083754405,
    233                   0.423733120134, 0.525083754405, 0.651536351379]).reshape(3, 3)
    234     # imshow 内插法 ,origin='lower'代表的就是选择的原点的位置
    235     plt.imshow(a,interpolation='nearest',cmap='bone',origin='lower')
    236     #添加一个colorbar,shrink参数,使colorbar的长度变短为原来的92%
    237     plt.colorbar(shrink=.92)
    238     plt.xticks(())
    239     plt.yticks(())
    240     plt.show()
    241 
    242 def draw3D():
    243     fig = plt.figure()
    244     ax = Axes3D(fig)
    245     x = np.arange(-4,4,0.25)
    246     y = np.arange(-4,4,0.25)
    247     #将 X 和 Y 编织成栅格
    248     x,y = np.meshgrid(x,y)
    249     r = np.sqrt(x**2+y**2)
    250     #
    251     z = np.sin(r)
    252     #画三维曲面,并将一个 colormap rainbow 填充颜色,之后将三维图像投影到 XY 平面上做一个等高线图
    253     #rstride 和 cstride 分别代表 row 和 column 的跨度。
    254     ax.plot_surface(x,y,z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))
    255 
    256     #添加投影
    257     ax.contour(x,y,z,zdir='z',offset=-1,cmap=plt.get_cmap('rainbow'))
    258     plt.show()
    259 
    260 #均匀图中图
    261 def drawBySubplot():
    262     plt.figure()
    263     #表示将整个图像窗口分为2行2列, 当前位置为1
    264     plt.subplot(2,2,1)
    265     #在第1个位置创建一个小图.
    266     plt.plot([0,1],[0,1])
    267 
    268     plt.subplot(2,2,2)
    269     plt.plot([0,1],[0,2])
    270 
    271     plt.subplot(2,2,3)
    272     plt.plot([0,1],[0,3])
    273 
    274     plt.subplot(2,2,4)
    275     plt.plot([0,1],[0,4])
    276 
    277     plt.show()
    278 
    279 #不均匀图中图
    280 def drawBySubplot02():
    281     plt.figure()
    282     plt.subplot(2,1,1)
    283     plt.plot([0,1],[0,1])
    284 
    285     plt.subplot(2,3,4)
    286     plt.plot([0,1],[0,2])
    287 
    288     #235等效于2,3,5
    289     plt.subplot(235)
    290     plt.plot([0,1],[0,3])
    291 
    292     plt.subplot(236)
    293     plt.plot([0,1],[0,4])
    294 
    295     plt.show()
    296 
    297 #分格显示
    298 def drawBySubplot2grid():
    299     plt.figure()
    300     #创建第1个小图, (3,3)表示将整个图像窗口分成3行3列, (0,0)表示从第0行第0列开始作图,colspan=3表示列的跨度为3, rowspan=1表示行的跨度为1. colspan和rowspan缺省, 默认跨度为1
    301     ax1 = plt.subplot2grid((3,3),(0,0),colspan=3)
    302     #画图
    303     ax1.plot([1,2],[1,2])
    304     #设置小图的标题
    305     ax1.set_title('ax1_title')
    306 
    307     ax2 = plt.subplot2grid((3,3),(1,0),colspan=2)
    308     ax3 = plt.subplot2grid((3,3),(1,2),colspan=2)
    309     ax4 = plt.subplot2grid((3,3),(2,0))
    310     ax5 = plt.subplot2grid((3,3),(2,1))
    311 
    312     ax4.scatter([1,2],[2,2])
    313     ax4.set_xlabel('ax4_x')
    314     ax4.set_ylabel('ax4_y')
    315 
    316     plt.show()
    317 
    318 #分格显示02
    319 def drawByGridspec():
    320     plt.figure()
    321     gs = gridspec.GridSpec(3,3)
    322     ax6 = plt.subplot(gs[0,:])
    323     ax7 = plt.subplot(gs[1,:2])
    324     ax8 = plt.subplot(gs[1:,2])
    325     ax9 = plt.subplot(gs[-1,0])
    326     ax10 = plt.subplot(gs[-1,-2])
    327     plt.show()
    328 
    329 #分格显示03
    330 def drawBySubplots():
    331     #建立一个2行2列的图像窗口,sharex=True表示共享x轴坐标, sharey=True表示共享y轴坐标. ((ax11, ax12), (ax13, ax14))表示第1行从左至右依次放ax11和ax12, 第2行从左至右依次放ax13和ax14.
    332     f,((ax11,ax12),(ax13,ax14))=plt.subplots(2,2,sharex=True,sharey=True)
    333     #创建一个散点图.
    334     ax11.scatter([1,2],[1,2])
    335     #紧凑显示图像
    336     plt.tight_layout()
    337     plt.show()
    338 
    339 #图中图
    340 def drawPlotInPlot():
    341     fig = plt.figure()
    342     x = [1,2,3,4,5,6,7]
    343     y = [1,3,4,2,5,8,6]
    344     #绘制大图,设置大图左下角的位置以及宽高
    345     left,bottom,width,height=0.1,0.1,0.8,0.8
    346     ax1 = fig.add_axes([left,bottom,width,height])
    347     #颜色为r(red)
    348     ax1.plot(x,y,'r')
    349     ax1.set_xlabel('x')
    350     ax1.set_ylabel('y')
    351     ax1.set_title('title')
    352 
    353     #绘制小图
    354     left,bottom,width,height=0.2,0.6,0.25,0.25
    355     ax2 = fig.add_axes([left,bottom,width,height])
    356     ax2.plot(y,x,'b')
    357     ax2.set_xlabel('x')
    358     ax2.set_ylabel('y')
    359     ax2.set_title('title inside 1')
    360 
    361     plt.axes([0.6,0.2,0.25,0.25])
    362     plt.plot(y[::-1],x,'g') #对y进行了逆序处理
    363     plt.xlabel('x')
    364     plt.ylabel('y')
    365     plt.title('title inside 2')
    366     plt.show()
    367 
    368 #次坐标
    369 def multiXandY():
    370     x = np.arange(0,10,0.1)
    371     y1 = 0.05*x**2
    372     y2 = -1 *y1
    373     fig,ax1=plt.subplots()
    374     #对ax1调用twinx()方法,生成如同镜面效果后的ax2
    375     ax2=ax1.twinx()
    376     ax1.plot(x,y1,'g-') #green,solid line
    377     ax1.set_xlabel('X data')
    378     ax1.set_ylabel('Y1 data',color='g')
    379     ax2.plot(x,y2,'b-')#blue
    380     ax2.set_ylabel('Y2 data',color='b')
    381     plt.show()
    382 
    383 def drawAnimation():
    384     fig, ax = plt.subplots()
    385     x = np.arange(0, 2 * np.pi, 0.01)
    386     line, = ax.plot(x, np.sin(x))
    387 
    388     def animateX(i):
    389         line.set_ydata(np.sin(x + i / 10.0))
    390 
    391     def init():
    392         line.set_ydata(np.sin(x))
    393 
    394     ani = animation.FuncAnimation(fig=fig,
    395                                   func=animateX,
    396                                   frames=100,
    397                                   init_func=init,
    398                                   interval=20,
    399                                   blit=False)
    400     plt.show()
    401     #ani.save('basic_animation.htm',fps=30,extra_args=['-vcodec','libx264'])
    402 
    403 
    404 drawAnimation()

    代码整理来源:https://morvanzhou.github.io/tutorials/data-manipulation/plt/2-1-basic-usage/

    官网教程:https://matplotlib.org/tutorials/index.html

    官网API文档:https://matplotlib.org/api/pyplot_summary.html

  • 相关阅读:
    在IIS上发布Web(使用VS2005)
    ASP.NET Web Service应用发布到IIs怎么做
    (转)在 Visual Studio 2010 中创建 ASP.Net Web Service
    matlab函数之diag
    Coursera《machine learning》--(6)逻辑回归
    UFLDL教程(五)之self-taught learning
    UFLDL教程之(三)PCA and Whitening exercise
    matlab的常用快捷键
    matlab函数之bsxfun
    Coursera《machine learning》--(14)数据降维
  • 原文地址:https://www.cnblogs.com/9527blog/p/9324758.html
Copyright © 2020-2023  润新知