《python图形绘制源代码.doc.pdf》由会员分享,可在线阅读,更多相关《python图形绘制源代码.doc.pdf(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、饼图饼图import matplotlib.pyplot as plt#Pie chart,where the slices will be ordered and plotted counter-clockwise:labels=Frogs,Hogs,Dogs,Logssizes=15,30,45,10explode=(0,0.1,0,0)#only explode the 2nd slice(i.e.Hogs)fig1,ax1=plt.subplots()ax1.pie(sizes,explode=explode,labels=labels,autopct=%1.1f%,shadow=Tr
2、ue,startangle=90)ax1.axis(equal)#Equal aspect ratio ensures that pie is drawn as a circle.plt.show()条形图条形图 1 1import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.ticker import MaxNLocatorfrom collections import namedtuplen_groups=5means_men=(20,35,30,35,27)std_men=(2,3,4,1,2)means_women
3、=(25,32,34,20,25)std_women=(3,5,2,3,3)fig,ax=plt.subplots()index=np.arange(n_groups)bar_width=0.35opacity=0.4error_config=ecolor:0.3rects1=ax.bar(index,means_men,bar_width,alpha=opacity,color=b,yerr=std_men,error_kw=error_config,label=Men)rects2=ax.bar(index+bar_width,means_women,bar_width,alpha=opa
4、city,color=r,yerr=std_women,error_kw=error_config,label=Women)ax.set_xlabel(Group)ax.set_ylabel(Scores)ax.set_title(Scores by group and gender)ax.set_xticks(index+bar_width/2)ax.set_xticklabels(A,B,C,D,E)ax.legend()fig.tight_layout()plt.show()表格图表格图import numpy as npimport matplotlib.pyplot as pltda
5、ta=66386,174296,75131,577908,32015,58230,381139,78045,99308,160454,89135,80552,152558,497981,603535,78415,81858,150656,193263,69638,139361,331509,343164,781380,52269columns=(Freeze,Wind,Flood,Quake,Hail)rows=%d year%x for x in(100,50,20,10,5)values=np.arange(0,2500,500)value_increment=1000#Get some
6、pastel shades for the colorscolors=plt.cm.BuPu(np.linspace(0,0.5,len(rows)n_rows=len(data)index=np.arange(len(columns)+0.3bar_width=0.4#Initialize the vertical-offset for the stacked bar chart.y_offset=np.zeros(len(columns)#Plot bars and create text labels for the tablecell_text=for row in range(n_r
7、ows):plt.bar(index,datarow,bar_width,bottom=y_offset,color=colorsrow)y_offset=y_offset+datarowcell_text.append(%1.1f%(x/1000.0)for x in y_offset)#Reverse colors and text labels to display the last value at the top.colors=colors:-1cell_text.reverse()#Add a table at the bottom of the axesthe_table=plt
8、.table(cellText=cell_text,rowLabels=rows,rowColours=colors,colLabels=columns,loc=bottom)#Adjust layout to make room for the table:plt.subplots_adjust(left=0.2,bottom=0.2)plt.ylabel(Loss in$0s.format(value_increment)plt.yticks(values*value_increment,%d%val for val in values)plt.xticks()plt.title(Loss
9、 by Disaster)plt.show()散点图散点图import numpy as npimport matplotlib.pyplot as pltimport matplotlib.cbook as cbook#Load a numpy record array from yahoo csv data with fields date,open,close,#volume,adj_close from the mpl-data/example directory.The record array#stores the date as an np.datetime64 with a d
10、ay unit(D)in the date column.with cbook.get_sample_data(goog.npz)as datafile:price_data=np.load(datafile)price_data.view(np.recarray)price_data=price_data-250:#get the most recent 250 trading daysdelta1=np.diff(price_data.adj_close)/price_data.adj_close:-1#Marker size in units of points2volume=(15*p
11、rice_data.volume:-2/price_data.volume0)*2close=0.003*price_data.close:-2/0.003*price_data.open:-2fig,ax=plt.subplots()ax.scatter(delta1:-1,delta11:,c=close,s=volume,alpha=0.5)ax.set_xlabel(r$Delta_i$,fontsize=15)ax.set_ylabel(r$Delta_i+1$,fontsize=15)ax.set_title(Volume and percent change)ax.grid(Tr
12、ue)fig.tight_layout()plt.show()平滑图平滑图import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.widgets import Slider,Button,RadioButtonsfig,ax=plt.subplots()plt.subplots_adjust(left=0.25,bottom=0.25)t=np.arange(0.0,1.0,0.001)a0=5f0=3delta_f=5.0s=a0*np.sin(2*np.pi*f0*t)l,=plt.plot(t,s,lw=2,col
13、or=red)plt.axis(0,1,-10,10)axcolor=lightgoldenrodyellowaxfreq=plt.axes(0.25,0.1,0.65,0.03,facecolor=axcolor)axamp=plt.axes(0.25,0.15,0.65,0.03,facecolor=axcolor)sfreq=Slider(axfreq,Freq,0.1,30.0,valinit=f0,valstep=delta_f)samp=Slider(axamp,Amp,0.1,10.0,valinit=a0)def update(val):amp=samp.valfreq=sfr
14、eq.vall.set_ydata(amp*np.sin(2*np.pi*freq*t)fig.canvas.draw_idle()sfreq.on_changed(update)samp.on_changed(update)resetax=plt.axes(0.8,0.025,0.1,0.04)button=Button(resetax,Reset,color=axcolor,hovercolor=0.975)def reset(event):sfreq.reset()samp.reset()button.on_clicked(reset)rax=plt.axes(0.025,0.5,0.1
15、5,0.15,facecolor=axcolor)radio=RadioButtons(rax,(red,blue,green),active=0)def colorfunc(label):l.set_color(label)fig.canvas.draw_idle()radio.on_clicked(colorfunc)plt.show()数据打钩标签图数据打钩标签图import datetimeimport numpy as npimport matplotlib.pyplot as pltimport matplotlib.dates as mdatesimport matplotlib
16、.cbook as cbookyears=mdates.YearLocator()#every yearmonths=mdates.MonthLocator()#every monthyearsFmt=mdates.DateFormatter(%Y)#Load a numpy record array from yahoo csv data with fields date,open,close,#volume,adj_close from the mpl-data/example directory.The record array#stores the date as an np.date
17、time64 with a day unit(D)in the date column.with cbook.get_sample_data(goog.npz)as datafile:r=np.load(datafile)price_data.view(np.recarray)fig,ax=plt.subplots()ax.plot(r.date,r.adj_close)#format the ticksax.xaxis.set_major_locator(years)ax.xaxis.set_major_formatter(yearsFmt)ax.xaxis.set_minor_locato
18、r(months)#round to nearest years.datemin=np.datetime64(r.date0,Y)datemax=np.datetime64(r.date-1,Y)+np.timedelta64(1,Y)ax.set_xlim(datemin,datemax)#format the coords message boxdef price(x):return$%1.2f%xax.format_xdata=mdates.DateFormatter(%Y-%m-%d)ax.format_ydata=priceax.grid(True)#rotates and righ
19、t aligns the x labels,and moves the bottom of the#axes up to make room for themfig.autofmt_xdate()plt.show()使用预定义标签的图例使用预定义标签的图例import numpy as npimport matplotlib.pyplot as plt#Make some fake data.a=b=np.arange(0,3,.02)c=np.exp(a)d=c:-1#Create plots with pre-defined labels.fig,ax=plt.subplots()ax.p
20、lot(a,c,k-,label=Model length)ax.plot(a,d,k:,label=Data length)ax.plot(a,c+d,k,label=Total message length)legend=ax.legend(loc=upper center,shadow=True,fontsize=x-large)#Put a nicer background color on the legend.legend.get_frame().set_facecolor(#00FFCC)plt.show()数学公式编辑图数学公式编辑图from _future_ import p
21、rint_functionimport matplotlib.pyplot as pltimport subprocessimport sysimport reimport gc#Selection of features following Writing mathematical expressions tutorialmathtext_titles=0:Header demo,1:Subscripts and superscripts,2:Fractions,binomials and stacked numbers,3:Radicals,4:Fonts,5:Accents,6:Gree
22、k,Hebrew,7:Delimiters,functions and Symbolsn_lines=len(mathtext_titles)#Randomly picked examplesmathext_demos=0:r$W3beta_delta_1 rho_1 sigma_2=rU3beta_delta_1 rho_1+frac18 pi 2 rintalpha_2_alpha_2 d alphaprime_2 leftfrac rU2beta_delta_1 rho_1-alphaprime_2U1beta_rrho_1 sigma_2 U0beta_rho_1 sigma_2rig
23、ht$,1:r$alpha_i beta_i,ralpha_i+1j=rm sin(2pi f_j t_i)e-5 t_i/tau,rldots$,2:r$frac34,binom34,stackrel34,rleft(frac5-frac1x4right),ldots$,3:r$sqrt2,sqrt3x,ldots$,4:r$mathrmRoman,mathitItalic,mathttTypewriter rmathrmor mathcalCALLIGRAPHY$,5:r$acute a,bar a,breve a,dot a,ddot a,grave a,rhat a,tilde a,v
24、ec a,widehatxyz,widetildexyz,rldots$,6:r$alpha,beta,chi,delta,lambda,mu,rDelta,Gamma,Omega,Phi,Pi,Upsilon,nabla,raleph,beth,daleth,gimel,ldots$,7:r$coprod,int,oint,prod,sum,rlog,sin,approx,oplus,star,varpropto,rinfty,partial,Re,leftrightsquigarrow,ldots$def doall():#Colors used in mpl online documen
25、tation.mpl_blue_rvb=(191./255.,209./256.,212./255.)mpl_orange_rvb=(202./255.,121./256.,0./255.)mpl_grey_rvb=(51./255.,51./255.,51./255.)#Creating figure and axis.plt.figure(figsize=(6,7)plt.axes(0.01,0.01,0.98,0.90,facecolor=white,frameon=True)plt.gca().set_xlim(0.,1.)plt.gca().set_ylim(0.,1.)plt.gc
26、a().set_title(Matplotlibs math rendering engine,color=mpl_grey_rvb,fontsize=14,weight=bold)plt.gca().set_xticklabels(,visible=False)plt.gca().set_yticklabels(,visible=False)#Gap between lines in axes coordsline_axesfrac=(1./(n_lines)#Plotting header demonstration formulafull_demo=mathext_demos0plt.a
27、nnotate(full_demo,xy=(0.5,1.-0.59*line_axesfrac),xycoords=data,color=mpl_orange_rvb,ha=center,fontsize=20)#Plotting features demonstration formulaefor i_line in range(1,n_lines):baseline=1-(i_line)*line_axesfracbaseline_next=baseline-line_axesfractitle=mathtext_titlesi_line+:fill_color=white,mpl_blu
28、e_rvbi_line%2plt.fill_between(0.,1.,baseline,baseline,baseline_next,baseline_next,color=fill_color,alpha=0.5)plt.annotate(title,xy=(0.07,baseline-0.3*line_axesfrac),xycoords=data,color=mpl_grey_rvb,weight=bold)demo=mathext_demosi_lineplt.annotate(demo,xy=(0.05,baseline-0.75*line_axesfrac),xycoords=d
29、ata,color=mpl_grey_rvb,fontsize=16)for i in range(n_lines):s=mathext_demosiprint(i,s)plt.show()if-latex in sys.argv:#Run:python mathtext_examples.py-latex#Need amsmath and amssymb packages.fd=open(mathtext_examples.ltx,w)fd.write(documentclassarticlen)fd.write(usepackageamsmath,amssymbn)fd.write(beg
30、indocumentn)fd.write(beginenumeraten)for i in range(n_lines):s=mathext_demosis=re.sub(r(?),xytext=(15,-10)plt.plot(data)plt.xlabel(time)plt.ylabel(my overall health)fig.text(0.5,0.05,Stove Ownership from xkcd by Randall Monroe,ha=center)with plt.xkcd():#Based on The Data So Far from XKCD by Randall
31、Monroe#http:/ BYnEXPERIMENT,REFUTED BYnEXPERIMENT)plt.yticks()plt.title(CLAIMS OF SUPERNATURAL POWERS)fig.text(0.5,0.05,The Data So Far from xkcd by Randall Monroe,ha=center)plt.show()样本子图样本子图import matplotlib.pyplot as pltimport numpy as npnp.random.seed(19680801)data=np.random.randn(2,100)fig,axs=
32、plt.subplots(2,2,figsize=(5,5)axs0,0.hist(data0)axs1,0.scatter(data0,data1)axs0,1.plot(data0,data1)axs1,1.hist2d(data0,data1)plt.show()极图极图import numpy as npimport matplotlib.pyplot as pltr=np.arange(0,2,0.01)theta=2*np.pi*rax=plt.subplot(111,projection=polar)ax.plot(theta,r)ax.set_rmax(2)ax.set_rti
33、cks(0.5,1,1.5,2)#Less radial ticksax.set_rlabel_position(-22.5)#Move radial labels away from plotted lineax.grid(True)ax.set_title(A line plot on a polar axis,va=bottom)plt.show()LogLog 图图import numpy as npimport matplotlib.pyplot as plt#Data for plottingt=np.arange(0.01,20.0,0.01)#Create figurefig,
34、(ax1,ax2),(ax3,ax4)=plt.subplots(2,2)#log y axisax1.semilogy(t,np.exp(-t/5.0)ax1.set(title=semilogy)ax1.grid()#log x axisax2.semilogx(t,np.sin(2*np.pi*t)ax2.set(title=semilogx)ax2.grid()#log x and y axisax3.loglog(t,20*np.exp(-t/10.0),basex=2)ax3.set(title=loglog base 2 on x)ax3.grid()#With errorbar
35、s:clip non-positive values#Use new data for plottingx=10.0*np.linspace(0.0,2.0,20)y=x*2.0ax4.set_xscale(log,nonposx=clip)ax4.set_yscale(log,nonposy=clip)ax4.set(title=Errorbars go negative)ax4.errorbar(x,y,xerr=0.1*x,yerr=5.0+0.75*y)#ylim must be set after errorbar to allow errorbar to autoscale lim
36、itsax4.set_ylim(ymin=0.1)fig.tight_layout()plt.show()椭圆图椭圆图import matplotlib.pyplot as pltimport numpy as npfrom matplotlib.patches import EllipseNUM=250ells=Ellipse(xy=np.random.rand(2)*10,width=np.random.rand(),height=np.random.rand(),angle=np.random.rand()*360)for i in range(NUM)fig,ax=plt.subplo
37、ts(subplot_kw=aspect:equal)for e in ells:ax.add_artist(e)e.set_clip_box(ax.bbox)e.set_alpha(np.random.rand()e.set_facecolor(np.random.rand(3)ax.set_xlim(0,10)ax.set_ylim(0,10)plt.show()流向图流向图import numpy as npimport matplotlib.pyplot as pltimport matplotlib.gridspec as gridspecw=3Y,X=np.mgrid-w:w:10
38、0j,-w:w:100jU=-1-X*2+YV=1+X-Y*2speed=np.sqrt(U*U+V*V)fig=plt.figure(figsize=(7,9)gs=gridspec.GridSpec(nrows=3,ncols=2,height_ratios=1,1,2)#Varying density along a streamlineax0=fig.add_subplot(gs0,0)ax0.streamplot(X,Y,U,V,density=0.5,1)ax0.set_title(Varying Density)#Varying color along a streamlinea
39、x1=fig.add_subplot(gs0,1)strm=ax1.streamplot(X,Y,U,V,color=U,linewidth=2,cmap=autumn)fig.colorbar(strm.lines)ax1.set_title(Varying Color)#Varying line width along a streamlineax2=fig.add_subplot(gs1,0)lw=5*speed/speed.max()ax2.streamplot(X,Y,U,V,density=0.6,color=k,linewidth=lw)ax2.set_title(Varying
40、 Line Width)#Controlling the starting points of the streamlinesseed_points=np.array(-2,-1,0,1,2,-1,-2,-1,0,1,2,2)ax3=fig.add_subplot(gs1,1)strm=ax3.streamplot(X,Y,U,V,color=U,linewidth=2,cmap=autumn,start_points=seed_points.T)fig.colorbar(strm.lines)ax3.set_title(Controlling Starting Points)#Display
41、ing the starting points with blue symbols.ax3.plot(seed_points0,seed_points1,bo)ax3.axis(-w,w,-w,w)#Create a maskmask=np.zeros(U.shape,dtype=bool)mask40:60,40:60=TrueU:20,:20=np.nanU=np.ma.array(U,mask=mask)ax4=fig.add_subplot(gs2:,:)ax4.streamplot(X,Y,U,V,color=r)ax4.set_title(Streamplot with Maski
42、ng)ax4.imshow(mask,extent=(-w,w,-w,w),alpha=0.5,interpolation=nearest,cmap=gray,aspect=auto)ax4.set_aspect(equal)plt.tight_layout()plt.show()线形图线形图import matplotlibimport matplotlib.pyplot as pltimport numpy as np#Data for plottingt=np.arange(0.0,2.0,0.01)s=1+np.sin(2*np.pi*t)#Note that using plt.su
43、bplots below is equivalent to using#fig=plt.figure()and then ax=fig.add_subplot(111)fig,ax=plt.subplots()ax.plot(t,s)ax.set(xlabel=time(s),ylabel=voltage(mV),title=About as simple as it gets,folks)ax.grid()fig.savefig(test.png)plt.show()多重图多重图import numpy as npimport matplotlib.pyplot as pltx1=np.li
44、nspace(0.0,5.0)x2=np.linspace(0.0,2.0)y1=np.cos(2*np.pi*x1)*np.exp(-x1)y2=np.cos(2*np.pi*x2)plt.subplot(2,1,1)plt.plot(x1,y1,o-)plt.title(A tale of 2 subplots)plt.ylabel(Damped oscillation)plt.subplot(2,1,2)plt.plot(x2,y2,.-)plt.xlabel(time(s)plt.ylabel(Undamped)plt.show()图片处理图图片处理图from _future_ imp
45、ort print_functionimport numpy as npimport matplotlib.cm as cmimport matplotlib.pyplot as pltimport matplotlib.cbook as cbookfrom matplotlib.path import Pathfrom matplotlib.patches import PathPatchdelta=0.025x=y=np.arange(-3.0,3.0,delta)X,Y=np.meshgrid(x,y)Z1=np.exp(-X*2-Y*2)Z2=np.exp(-(X-1)*2-(Y-1)
46、*2)Z=(Z1-Z2)*2im=plt.imshow(Z,interpolation=bilinear,cmap=cm.RdYlGn,origin=lower,extent=-3,3,-3,3,vmax=abs(Z).max(),vmin=-abs(Z).max()plt.show()直方图直方图import matplotlibimport numpy as npimport matplotlib.pyplot as pltnp.random.seed(19680801)#example datamu=100#mean of distributionsigma=15#standard de
47、viation of distributionx=mu+sigma*np.random.randn(437)num_bins=50fig,ax=plt.subplots()#the histogram of the datan,bins,patches=ax.hist(x,num_bins,density=1)#add a best fit liney=(1/(np.sqrt(2*np.pi)*sigma)*np.exp(-0.5*(1/sigma*(bins-mu)*2)ax.plot(bins,y,-)ax.set_xlabel(Smarts)ax.set_ylabel(Probabili
48、ty density)ax.set_title(rHistogram of IQ:$mu=100$,$sigma=15$)#Tweak spacing to prevent clipping of ylabelfig.tight_layout()plt.show()路径图路径图import matplotlib.path as mpathimport matplotlib.patches as mpatchesimport matplotlib.pyplot as pltfig,ax=plt.subplots()Path=mpath.Pathpath_data=(Path.MOVETO,(1.
49、58,-2.57),(Path.CURVE4,(0.35,-1.1),(Path.CURVE4,(-1.75,2.0),(Path.CURVE4,(0.375,2.0),(Path.LINETO,(0.85,1.15),(Path.CURVE4,(2.2,3.2),(Path.CURVE4,(3,0.05),(Path.CURVE4,(2.0,-0.5),(Path.CLOSEPOLY,(1.58,-2.57),codes,verts=zip(*path_data)path=mpath.Path(verts,codes)patch=mpatches.PathPatch(path,facecol
50、or=r,alpha=0.5)ax.add_patch(patch)#plot control points and connecting linesx,y=zip(*path.vertices)line,=ax.plot(x,y,go-)ax.grid()ax.axis(equal)plt.show()三维图三维图from mpl_toolkits.mplot3d import Axes3Dimport matplotlib.pyplot as pltfrom matplotlib import cmfrom matplotlib.ticker import LinearLocator,Fo