1.图形样式
(1)数据展示(图表类型:线形图、柱状图、盒形图、散布图、等值线图等)
fig=plt.figure()#创建新的figure
plt.gcf()#得到当前的引用
ax1=fig.add_subplot(2,2,1)#创建一个或多个subplot
plt.plot([1.5,3.5,2,5])#在最后一个用过的subplot上进行绘制
ax1.hist(randn(100),bins=20,color='k',alpha=0.3)#在ax1上绘制直方图
plt.subplots()#结合figure和subplot
subplot_adjust(left=None,right=None,bottom=None,top=None,wspace=None,hspace=None)#调整subplot周围的间距
plt.plot(x,c,color='blue',linewidth=2.0,linestyle='-',marker='o',drawstyle='steps-post')#设置曲线的粗细,颜色,标记和插值方式
(2)图例
ax.plot(randn(1000).cumsum(),'k',label='one')#手动传入label
ax.legend(loc='best')#自动选择最不碍事的地方
(3)标题
ax.set_title('My first matplotlib plot')
(4)刻度标签
xlim,xticks,xticklabels
set_,get_
1)设置坐标轴范围
plt.xlim(X.min()*1.1,X.max()*1.1)
2)设置坐标轴刻度位置
ticks=ax.set_xticks([0,250,500,750,1000])
3)设置坐标轴刻度标签
labels=ax.set_xticklabels(['one','two','three','four','five'],rotation=30,fontsize='small')
plt.xticks((-np.pi,-np.pi/2,np.pi/2,np.pi),(r'$-\pi$',r'$-\pi/2$',r'$\pi/2$',r'\pi$')) #前面是确定坐标,后面是在坐标上显示的标签 #结合上面两个
4)设置坐标轴名称
ax.set_xlabel('Stages')
5)隐藏坐标轴和移动坐标轴
ax=plt.gca()#gca means get current axis得到当前坐标轴
ax.spines['right'].set_color('none')#通过none隐藏
ax.xaxis.set_ticks_position('bottom') #把刻度显示在当前轴上
ax.spines['bottom'].set_position(('data',0))#移动坐标轴 0代表x轴在y方向上的0处,‘data’目前还不清楚什么意思?
(5)放置注解
text,arrow,annotate
plt.plot([t,t],[0,np.cos(t)],color='blue',linewidth=1.5,linestyle='--')#从(t,0)到(t,cos(t))
plt.scatter([t,],[np.cos(t),],50,color='blue')#画个点
plt.annotate(r'$cos(\frac{2\pi}{3})=-\frac{1}{2}$',
xy=(t,np.cos(t)),xycoords='data',
xytext=(-90,-50),textcoords='offset points',fontsize=16,
arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))#\转意符,frac上下结构和{}配合使用,xy坐标,xytext,偏移点
2.图形对象
plt.figure创建图像,设置大小,不调用这个函数也行,系统有一个默认大小
参数 num:图像标识符,figsize图像大小(单位英寸),dpi(每英寸多小点)
plt.subplot创建子图
plt.axes创建坐标轴 坐标轴可以在图形上任意摆放,不需要按照网格。
plt.gca 获取当前坐标轴
复杂子图布局,用gridspec,G=gridspec.GridSpec(3,3) plt.subplot(G[0,:1])
坐标轴创建 plt.axes([.1,.1,.8,.8])
3.画图操作
plt.scatter(X,Y,s=75,c=T,alpha=.5)#s size点的大小,c color 点的颜色, alpha 透明度
plt.fill_between(X,-1,Y-1,(Y-1)>-1,color='blue',alpha=.25)# X范围 -1到Y-1之间 且(Y-1)>1成立,涂成blue
plt.bar(X,Y1,facecolor='#9999ff',edgecolor='white') #柱状图
np.meshgrid(x,y) 计算出x,y的交点
plt.contourf(X,Y,f(X,Y),8,alpha=.75,cmap=plt.cm.hot) #8指分成8类 cmap表示颜色映射风格
C=plt.contour(X,Y,f(X,Y),8,colors='black',linewidth=.5)#画等高线
plt.clabel(C,inline=1,fontsize=10)#表示等高线数值,inline代表把线打断,写在线里面
plt.imshow(f(X,Y),cmap='hot',origin='low')#把f(X,Y)矩阵的数值转化为图片
plt.pie(Z,explode=Z*0.05,colors=['%f'%(i/float(n)) for i in range(n)])#explode 每块扇形向外移多少
用plt.bar把圆形,先把polar=True
plt.subplot(1,2,2,polar=True)
plt.bar(theta,radii,width=width,bottom=0.0)#theta代表起始位置,radii代表半径,width代表宽度(这里指弧度)
4.pandas中的绘图函数
(1)线形图
s=Series(np.random.randn(10).cumsum(),index=np.arange(0,100,10)
s.plot()#用索引绘制x轴
df=DataFrame(np.random.randn(10,4).cumsum(0),columns=['A','B','C','D'],index=np.arange(0,100,10))
df.plot()#以各列绘制一条线,自动创建图例
(2)柱状图
data=Series(np.random.rand(16),index=list('abcdefghijklmnop'))
data.plot(kind='bar',ax=axes[0])#垂直柱状图
data.plot(kind='barh',ax=axes[1])#水平柱状图
df.plot(kind='bar')#每一行作为一组
df.plot(kind='barh',stacked=True)#堆积柱状图
(3)直方图和密度图
values.hist(bins=100,normed=True)#直方图
values.plot(kind='kde')#密度图
(4)散布图
plt.scatter(trans_data['m1'],trans_data['unemp'])
plt.scatter_matrix(trans_data,diagonal='kde')#散布图矩阵,对角线放置密度图(也可为直方图)
其他:关闭用close()
绘制地图用basemap工具集,下载地址 http://matplotlib.github.com/basemap
参考文献:《scikit-learn 机器学习》
《Python for Data Analysis》