Matplotlib一些基础用法

来源:互联网 发布:vb中要求对象 编辑:程序博客网 时间:2024/05/16 12:39

Matplotlib一些基础用法

1 Matplotlib安装

# python 2+ 请复制以下在 terminal 中执行$sudo apt-get install python-matplotlib

2 figure的基础用法

import matplotlib.pyplot as pltimport numpy as npx = np.linspace(-3, 3, 50)y1 = 2*x + 1y2 = x**2plt.figure(num=3, figsize=(8, 5),)plt.plot(x, y2)plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')plt.show()plt.show()

3 设置坐标轴的标签,范围

plt.xlim((-1, 2))plt.ylim((-2, 3))plt.xlabel('I am x')plt.ylabel('I am y')#使用np.linspace定义范围以及个数:范围是(-1,2);个数是5. 使用print打印出新定义的范围. #使用plt.xticks设置x轴刻度:范围是(-1,2);个数是5.new_ticks = np.linspace(-1, 2, 5)print(new_ticks)plt.xticks(new_ticks)#使用plt.yticks设置y轴刻度以及名称:刻度为[-2, -1.8, -1, 1.22, 3];#对应刻度的名称为[‘really bad’,’bad’,’normal’,’good’, ‘really good’]. #使用plt.show显示图像.plt.yticks([-2, -1.8, -1, 1.22, 3],[r'$really\ bad$', r'$bad$', r'$normal$', r'$good$', r'$really\ good$'])plt.show()#使用plt.gca获取当前坐标轴信息. #使用.spines设置边框:右侧边框;#使用.set_color设置边框颜色:默认白色; #使用.spines设置边框:上边框;#使用.set_color设置边框颜色:默认白色;ax = plt.gca()ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')plt.show()#使用.xaxis.set_ticks_position设置x坐标刻度数字或名称的位置:bottom.#(所有位置:top,bottom,both,default,none)ax.xaxis.set_ticks_position('bottom')#使用.spines设置边框:x轴;使用.set_position设置边框位置:y=0的位置;#(位置所有属性:outward,axes,data)ax.spines['bottom'].set_position(('data', 0))#使用.yaxis.set_ticks_position设置y坐标刻度数字或名称的位置:left.#(所有位置:left,right,both,default,none)ax.yaxis.set_ticks_position('left')#使用.spines设置边框:y轴;使用.set_position设置边框位置:x=0的位置;#(位置所有属性:outward,axes,data) 使用plt.show显示图像.ax.spines['left'].set_position(('data',0))

4 legend图例

# set line styles#需要注意的是 l1, l2,要以逗号结尾, 因为plt.plot() 返回的是一个列表l1, = plt.plot(x, y1, label='linear line')l2, = plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--', label='square line')#legend将要显示的信息来自于上面代码中的 label. #所以我们只需要简单写下一下代码, plt 就能自动的为我们添加图例.plt.legend(loc='upper right')

5 annotation注解

import matplotlib.pyplot as pltimport numpy as npx = np.linspace(-3, 3, 50)y = 2*x + 1plt.figure(num=1, figsize=(8, 5),)plt.plot(x, y,)ax = plt.gca()ax.spines['right'].set_color('none')ax.spines['top'].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))x0 = 1y0 = 2*x0 + 1plt.plot([x0, x0,], [0, y0,], 'k--', linewidth=2.5)plt.scatter([x0, ], [y0, ], s=50, color='b')# method 1:#####################plt.annotate(r'$2x+1=%s$' % y0, xy=(x0, y0), xycoords='data', xytext=(+30, -30),             textcoords='offset points', fontsize=16,             arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.2"))# method 2:########################plt.text(-3.7, 3, r'$This\ is\ the\ some\ text. \mu\ \sigma_i\ \alpha_t$',         fontdict={'size': 16, 'color': 'r'})plt.show()

6 tick_visibility能见度

import matplotlib.pyplot as pltimport numpy as npx = np.linspace(-3, 3, 50)y = 0.1*xplt.figure()plt.plot(x, y, linewidth=10)plt.ylim(-2, 2)ax = plt.gca()ax.spines['right'].set_color('none')ax.spines['top'].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))for label in ax.get_xticklabels() + ax.get_yticklabels():    label.set_fontsize(12)    label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.7))plt.show()

7 scatter散点图

import matplotlib.pyplot as pltimport numpy as npn = 1024    # data sizeX = np.random.normal(0, 1, n)Y = np.random.normal(0, 1, n)T = np.arctan2(Y, X)    # for color later onplt.scatter(X, Y, s=75, c=T, alpha=.5)plt.xlim(-1.5, 1.5)plt.xticks(())  # ignore xticksplt.ylim(-1.5, 1.5)plt.yticks(())  # ignore yticksplt.show()

8 bar柱状图

import matplotlib.pyplot as pltimport numpy as npn = 12X = np.arange(n)Y1 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)Y2 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white')plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')for x, y in zip(X, Y1):    # ha: horizontal alignment    # va: vertical alignment    plt.text(x + 0.4, y + 0.05, '%.2f' % y, ha='center', va='bottom')for x, y in zip(X, Y2):    # ha: horizontal alignment    # va: vertical alignment    plt.text(x + 0.4, -y - 0.05, '%.2f' % y, ha='center', va='top')plt.xlim(-.5, n)plt.xticks(())plt.ylim(-1.25, 1.25)plt.yticks(())plt.show()

9 contours等高线图

import matplotlib.pyplot as pltimport numpy as npdef f(x,y):    # the height function    return (1 - x / 2 + x**5 + y**3) * np.exp(-x**2 -y**2)n = 256x = np.linspace(-3, 3, n)y = np.linspace(-3, 3, n)X,Y = np.meshgrid(x, y)# use plt.contourf to filling contours# X, Y and value for (X,Y) pointplt.contourf(X, Y, f(X, Y), 8, alpha=.75, cmap=plt.cm.hot)# use plt.contour to add contour linesC = plt.contour(X, Y, f(X, Y), 8, colors='black', linewidth=.5)# adding labelplt.clabel(C, inline=True, fontsize=10)plt.xticks(())plt.yticks(())plt.show()

10 image 图片

import matplotlib.pyplot as pltimport numpy as np# image dataa = np.array([0.313660827978, 0.365348418405, 0.423733120134,              0.365348418405, 0.439599930621, 0.525083754405,              0.423733120134, 0.525083754405, 0.651536351379]).reshape(3,3)"""for the value of "interpolation", check this:http://matplotlib.org/examples/images_contours_and_fields/interpolation_methods.htmlfor the value of "origin"= ['upper', 'lower'], check this:http://matplotlib.org/examples/pylab_examples/image_origin.html"""plt.imshow(a, interpolation='nearest', cmap='bone', origin='lower')plt.colorbar(shrink=.92)plt.xticks(())plt.yticks(())plt.show()

11 3D数据

import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()ax = Axes3D(fig)# X, Y valueX = np.arange(-4, 4, 0.25)Y = np.arange(-4, 4, 0.25)X, Y = np.meshgrid(X, Y)R = np.sqrt(X ** 2 + Y ** 2)# height valueZ = np.sin(R)ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'))"""============= ================================================        Argument      Description        ============= ================================================        *X*, *Y*, *Z* Data values as 2D arrays        *rstride*     Array row stride (step size), defaults to 10        *cstride*     Array column stride (step size), defaults to 10        *color*       Color of the surface patches        *cmap*        A colormap for the surface patches.        *facecolors*  Face colors for the individual patches        *norm*        An instance of Normalize to map values to colors        *vmin*        Minimum value to map        *vmax*        Maximum value to map        *shade*       Whether to shade the facecolors        ============= ================================================"""# I think this is different from plt12_contoursax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.get_cmap('rainbow'))"""==========  ================================================        Argument    Description        ==========  ================================================        *X*, *Y*,   Data values as numpy.arrays        *Z*        *zdir*      The direction to use: x, y or z (default)        *offset*    If specified plot a projection of the filled contour                    on this position in plane normal to zdir        ==========  ================================================"""ax.set_zlim(-2, 2)plt.show()

12 subplot 多合一显示

import matplotlib.pyplot as plt# example 1:###############################plt.figure(figsize=(6, 4))# plt.subplot(n_rows, n_cols, plot_num)plt.subplot(2, 2, 1)plt.plot([0, 1], [0, 1])plt.subplot(222)plt.plot([0, 1], [0, 2])plt.subplot(223)plt.plot([0, 1], [0, 3])plt.subplot(224)plt.plot([0, 1], [0, 4])plt.tight_layout()# example 2:###############################plt.figure(figsize=(6, 4))# plt.subplot(n_rows, n_cols, plot_num)plt.subplot(2, 1, 1)# figure splits into 2 rows, 1 col, plot to the 1st sub-figplt.plot([0, 1], [0, 1])plt.subplot(234)# figure splits into 2 rows, 3 col, plot to the 4th sub-figplt.plot([0, 1], [0, 2])plt.subplot(235)# figure splits into 2 rows, 3 col, plot to the 5th sub-figplt.plot([0, 1], [0, 3])plt.subplot(236)# figure splits into 2 rows, 3 col, plot to the 6th sub-figplt.plot([0, 1], [0, 4])plt.tight_layout()plt.show()

13 subplot 分格显示

import matplotlib.pyplot as pltimport matplotlib.gridspec as gridspec# method 1: subplot2grid##########################plt.figure()ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)  # stands for axesax1.plot([1, 2], [1, 2])ax1.set_title('ax1_title')ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2)ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan=2)ax4 = plt.subplot2grid((3, 3), (2, 0))ax4.scatter([1, 2], [2, 2])ax4.set_xlabel('ax4_x')ax4.set_ylabel('ax4_y')ax5 = plt.subplot2grid((3, 3), (2, 1))# method 2: gridspec#########################plt.figure()gs = gridspec.GridSpec(3, 3)# use index from 0ax6 = plt.subplot(gs[0, :])ax7 = plt.subplot(gs[1, :2])ax8 = plt.subplot(gs[1:, 2])ax9 = plt.subplot(gs[-1, 0])ax10 = plt.subplot(gs[-1, -2])# method 3: easy to define structure####################################f, ((ax11, ax12), (ax13, ax14)) = plt.subplots(2, 2, sharex=True, sharey=True)ax11.scatter([1,2], [1,2])plt.tight_layout()plt.show()

14图中图

import matplotlib.pyplot as pltfig = plt.figure()x = [1, 2, 3, 4, 5, 6, 7]y = [1, 3, 4, 2, 5, 8, 6]# below are all percentageleft, bottom, width, height = 0.1, 0.1, 0.8, 0.8ax1 = fig.add_axes([left, bottom, width, height])  # main axesax1.plot(x, y, 'r')ax1.set_xlabel('x')ax1.set_ylabel('y')ax1.set_title('title')ax2 = fig.add_axes([0.2, 0.6, 0.25, 0.25])  # inside axesax2.plot(y, x, 'b')ax2.set_xlabel('x')ax2.set_ylabel('y')ax2.set_title('title inside 1')# different method to add axes####################################plt.axes([0.6, 0.2, 0.25, 0.25])plt.plot(y[::-1], x, 'g')plt.xlabel('x')plt.ylabel('y')plt.title('title inside 2')plt.show()

15次坐标轴

import matplotlib.pyplot as pltimport numpy as npx = np.arange(0, 10, 0.1)y1 = 0.05 * x**2y2 = -1 *y1fig, ax1 = plt.subplots()ax2 = ax1.twinx()    # mirror the ax1ax1.plot(x, y1, 'g-')ax2.plot(x, y2, 'b-')ax1.set_xlabel('X data')ax1.set_ylabel('Y1 data', color='g')ax2.set_ylabel('Y2 data', color='b')plt.show()

16 animation

import numpy as npfrom matplotlib import pyplot as pltfrom matplotlib import animationfig, ax = plt.subplots()x = np.arange(0, 2*np.pi, 0.01)line, = ax.plot(x, np.sin(x))def animate(i):    line.set_ydata(np.sin(x + i/10.0))  # update the data    return line,# Init only required for blitting to give a clean slate.def init():    line.set_ydata(np.sin(x))    return line,# call the animator.  blit=True means only re-draw the parts that have changed.# blit=True dose not work on Mac, set blit=False# interval= update frequencyani = animation.FuncAnimation(fig=fig, func=animate, frames=100, init_func=init,                              interval=20, blit=False)# save the animation as an mp4.  This requires ffmpeg or mencoder to be# installed.  The extra_args ensure that the x264 codec is used, so that# the video can be embedded in html5.  You may need to adjust this for# your system: for more information, see# http://matplotlib.sourceforge.net/api/animation_api.html# anim.save('basic_animation.mp4', fps=30, extra_args=['-vcodec', 'libx264'])plt.show()
原创粉丝点击