# -*- 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()
Python中的matplotlib画图总结
猜你喜欢
转载自qu66q.iteye.com/blog/2317405
今日推荐
周排行