Python中的matplotlib画图总结

# -*- coding: utf-8 -*- 
import matplotlib.pyplot as plt 
from numpy.random import randn 
import numpy as np 
from io import StringIO
import pandas as pd 
'''
#Create figure
fig = plt.figure()

#创建子图subplot: 表示2X2,即4个子图中的第1个图,编号为1
#参数:nrows, ncols, sharex(所有子图是否使用相同的x轴),sharey,subplot_kw(用于创建各subplot的关键字字典)
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2) #第二个子图,编号为2
ax3 = fig.add_subplot(2,2,3) #第三个制图,编号为3

plt.plot(randn(50).cumsum(), 'ko--')  #在最后一个图中画线,k代表颜色,o表示每个数据点上加粗,强调实际的数据点,--代表样式
ax1.hist(randn(1000), bins=20, color='k', alpha=0.3)  #设置在ax1中画柱状图
ax2.scatter(np.arange(30), np.arange(30) + 3 * randn(30)) #设置在ax2中画散点图

#比较便携的方式, 直接返回figure和axes数组,2个figure,每个figure有3个subplot
#fig, axes = plt.subplots(2,3)

#修改图外围留下的边距和子图之间的边距,前四个代表外围边距,wspace代表左右间距,hspace上下间距
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)

#返回当前X轴绘图范围
print plt.xlim()
print ax1.get_xlim()

#设置x轴范围
plt.xlim([0,10])
ax1.set_xlim([0,10])

#设置刻度与刻度标签
ticks = ax1.set_xticks([0,5,10,15,20])
labels = ax1.set_xticklabels(['one','two','three','four','five'])

#设置图标title和x轴名称
ax1.set_title('XXXXXXX')
ax1.set_xlabel('XXX')

#添加图例
ax1.plot(randn(1000).cumsum(), 'k--', label='one') #不需要图例,则无需label参数
ax1.legend(loc='best') #'best'表示见图里放在最不碍眼的地方

#添加注解,通过text,arrow和annotate等添加
ax1.text(100,30,'Hello',family='monospace', fontsize=10)
ax1.annotate( 'Hello', xy=(100,10), xytext=(100,30), arrowprops=dict(facecolor='black'),horizontalalignment='left', verticalalignment='top' )

plt.show()  #显示图表

#保存图表到文件
#plt.savefig('figPath.svg/pdf/png', dpi=400, bbox_inches='tight')
#保存图表到IO
#buffer = StringIO()
#plt.savefig(buffer)
'''

'''
pandas 绘图
'''
df = pd.DataFrame(np.random.randn(10,4).cumsum(0), columns=['A','B','C','D'],
	           index=np.arange(0,100,10))

#Series.plot参数
#label,ax,style='ko--',alpha
#kind='line/bar/barh/kde(密度图,标准混合正态分布KDE)'
#loyg=True y轴使用对数标尺
#use_index=True 将对象的索引用作刻度标签
#rot 旋转刻度标签
#xticks,yticks,x,y的刻度值
#xlim=[0,10] X轴的界限
#ylim=[0,10] Y轴的界限
#grid=True 网格线,默认打开

#DataFrame.plot参数
#subplots=True:将各个DataFrame列绘制到单独的subplot中
#sharex,sharey
#figsize:表示图新鲜大小的元祖
#title,legend,默认为True
#sort_columns:以字母表为顺序绘制
#stacked=True:每行的值就会堆积
df.plot( kind='kde', stacked=True)

#plt.scatter(x,y)

#DataFrame创建散布图矩阵,还支持在对角线上放置各变量的直方图或密度图
pd.scatter_matrix(df, diagonal='kde', color='k', alpha=0.3)

plt.show()

猜你喜欢

转载自qu66q.iteye.com/blog/2317405