matplotlib 实战案例详解

案例一


frommatplotlib.patches import Polygon

deffunc(x):

return -(x-2)*(x-8)+40

x=np.linspace(0,10)

y=func(x)

fig,ax=plt.subplots()

plt.plot(x,y,"r",linewidth =  2)

a=2

b=9

ax.set_xticks([a,b])

ax.set_yticks([])

ax.set_xticklabels([r'$a$',r"$b$"])

ix=np.linspace(a,b)

iy=func(ix)

ixy=zip(ix,iy)

verts =[(a,0)]+list(ixy)+[(b,0)]

poly =Polygon(verts,facecolor='0.9',edgecolor='0.1')

ax.add_patch(poly)

plt.figtext(0.9,0.05,"$x$")

plt.figtext(0.1,0.9,"$y$")

x_match=(a+b)*0.4

y_match =35

plt.text(x_match,y_match,r"$\int_a^b(-x)dx$", fontsize =20,horizontalalignment='center')

plt.show()

 matplotlib 实战案例详解



案例2 

importnumpy as np

importmatplotlib.pyplot as plt

plt.style.use('ggplot')

x=np.random.randn(200)

y=x+np.random.randn(200)*0.5

margin_border =0.1

height =0.2

margin_between = 0.02

width =0.6

left_s=margin_border

bottom_s=margin_border

height_s=width

width_s=width

left_x=margin_border

bottom_x=margin_border+width+margin_between

height_x=height

width_x = width

left_y= margin_border+width+margin_between

bottom_y = margin_border

height_y = width

width_y = height

plt.figure(1,figsize=(8,8))

rect_s= [left_s,bottom_s, width_s,height_s]

rect_x= [left_x,bottom_x, width_x,height_x]

rect_y= [left_y,bottom_y, width_y,height_y]

axScatter= plt.axes(rect_s)

axHisX = plt.axes(rect_x)

axHisY = plt.axes(rect_y)

plt.show()


 

importnumpy as np

importmatplotlib.pyplot as plt

plt.style.use('ggplot')

x=np.random.randn(200)

y=x+np.random.randn(200)*0.5

margin_border =0.1

height =0.2

margin_between = 0.02

width =0.6

left_s=margin_border

bottom_s=margin_border

height_s=width

width_s=width

left_x=margin_border

bottom_x=margin_border+width+margin_between

height_x=height

width_x = width

left_y= margin_border+width+margin_between

bottom_y = margin_border

height_y = width

width_y = height

plt.figure(1,figsize=(8,8))

rect_s= [left_s,bottom_s, width_s,height_s]

rect_x= [left_x,bottom_x, width_x,height_x]

rect_y= [left_y,bottom_y, width_y,height_y]

axScatter= plt.axes(rect_s )

axHisX = plt.axes(rect_x)

axHisY = plt.axes(rect_y)

axHisX.set_xticks([])

axHisY.set_yticks([])

axScatter.scatter(x,y)

bin_width =0.25

xymax=np.max([np.max(np.fabs(x)),np.max(np.fabs(y))])

lim =int(xymax/bin_width+1)*bin_width

axScatter.set_xlim(-lim,lim)

axScatter.set_ylim(-lim,lim)

bins=np.arange(-lim,lim+bin_width,bin_width)

axHisX.hist(x,bins=bins)

axHisY.hist(y,bins=bins,orientation='horizontal')

axHisX.set_xlim(axScatter.get_xlim())

axHisY.set_ylim(axScatter.get_ylim())   

plt.title('Scatter and Hist')

plt.show()


matplotlib 实战案例详解



案例3 

#_8_coding:utf-8 _*_

frommatplotlib.font_manager importFontProperties

font =FontProperties(fname=r'c:\windows\fonts\simsun.ttc',size =12)

plt.style.use('ggplot')

ability_size =6

ability_label=[u'进攻',u'防守',u'盘带',u'速度',u'体力',u'射术']

 

ax1 = plt.subplot(221,projection="polar")

ax2 = plt.subplot(222,projection="polar")

ax3 = plt.subplot(223,projection="polar")

ax4 = plt.subplot(224,projection="polar")

 

player={

   'M':np.random.randint(size=ability_size, low =60, high =99),

   'H':np.random.randint(size=ability_size, low =60, high =99),

   'P':np.random.randint(size=ability_size, low =60, high =99),

   'Q':np.random.randint(size=ability_size, low =60, high =99),    

}

theta=np.linspace(0,2*np.pi,6,endpoint=False)

theta=np.append(theta,theta[0])

player['M']=np.append(player['M'],player['M'][0])

ax1.plot(theta,player['M'],'r')

ax1.fill(theta, player['M'],'r',alpha =0.3)

ax1.set_xticks(theta)

ax1.set_xticklabels(ability_label,y=0.02,fontproperties=font)

ax1.set_title(u'梅西',position=(0.5,0.98),fontproperties = font, color ='r', size = 20 )

ax1.set_yticks([20,40,60,80,100])

plt.show()

matplotlib 实战案例详解


案例4 K线图


from matplotlib.finance importcandlestick_ohlc

 

plt.style.use('ggplot')

volumns=np.array([])

dates=np.array([])

for record in quotes:

    dates = np.append(record[0])

   volumns=np.append(record[5])

        

         left,width =0.1,0.8

rect_vol = [left,0.1, width,0.26]

rect_main= [left,0.4 width,0.5]

 

 

fig = plt.figure()

ax_vol=fig.add_axes(rect_vol)

ax_vol.fill_between(dates,volumns,color='y')

ax_vol.xaxis_date()

plt.setup(ax_vol.getxticklabels(), rotation=30,horizontalaligment ='right')

 

ax_main= fig,add_axes(rect_main)

 

 

candlestick_ohlc(ax_main, quotes, width=0.6, colorup='r', colordown ='g'

ax_main.axes.get_xaxis().set_visiable(False)

 

ax_main.set_title('STOCK')

 

plt.show()