1 import mayplotlib.pyplot as plt 2 #mayplotlib所绘制的图位于图片中,可以使用plt.figure生成一个新的图片 3 fig = plt.figure() 4 #你不能使用空白的图片进行绘图,需要使用add_subplot创建一个或多个子图 5 #图片应该是2x2的,最多四个,选择了四个图片中的第一个序号从1开始 6 ax1 = fig.add_subplot(2,2,1) 7 ax1 = fig.add_subplot(2,2,2) 8 ax1 = fig.add_subplot(2,2,3) 9 #k--是用于绘制黑色分段线的style选项 10 plt.plot(np.random.randn(50).cumsum(),'k--') 11 #使用子图网格创建图片,使用plt.subplots创建一个新的图片,返回包含已生成子图对象的numpy数组 12 fig, axes = plt.subplots(2,3) 13 #plt.subplots选项 14 #nrows 子图的行数 15 #ncols 子图的列数 16 #sharex 所有子图使用相同的x轴刻度 17 #sharey 所有子图使用相同的y轴刻度 18 #subplot_kw 传入add_subplot的关键字参数字典,用于生成子图 19 #**fig_kw 在生成图片时使用的额外关键字参数,例如plt.subplots(2,2,figsize=(8,6)) 20 #调整子图周围的间距,wspace,hspace控制图片的宽度和高度百分比 21 subplots_adjust(left=None,bottom=None,right=None,top=None,wspace=None,hspace=None) 22 fig,axes = plt.subplots(2,2,sharex=True,sharey=True) 23 for i in range(2): 24 for j in range(2): 25 axes[i,j].hist(np.random.randn(500),bins=60,color='k',alpha=0.5) 26 plt.subplots_adjust(wspace=0,hspace=0) 27 #颜色标记和线类型 28 plot(randn(30).cumsum(),color='k',linestyle='dashed',marker='o') 29 #刻度标签和图例 30 #设置标题、轴标签、刻度、刻度标签 31 fig = plt.figure() 32 ax = fig.add_subplot(1,1,1) 33 ax.plt(np.random.randn(100).cumsum()) 34 #要改变x轴的刻度,使用set_xticks 和set_xticklabels rotation选项将x轴刻度标签旋转30度 35 ticks = ax.set_xticks([0,250,500,750,1000]) 36 labels = ax.set_xticklabels(['one','two','three','four','five'],rotation=30,fontsize='small') 37 ax.set_title('my first plot') 38 ax.set_xlabel('stages') 39 #添加图例 40 from numpy.random import randn 41 fig = plt.figure() 42 ax = fig.add_subplot(1,1,1) 43 ax.plot(randn(1000).cumsum(),'k',label='one') 44 ax.plot(randn(1000).cumsum(),'k',label='two') 45 ax.plot(randn(1000).cumsum(),'k',label='three') 46 ax.legend(loc='best') 47 #注释与子图加工,使用text、arrow、annote添加注释和文本 48 from datatime import datetime 49 fig = plt.figure() 50 ax = fig.add_subplot(1,1,1) 51 data = pd.read_csv('examples/spx.csv',index_col=0,parse_dates=True) 52 spx = data['SPX'] 53 spx.plot(ax=ax,style='k--') 54 crisis_data = [ 55 (datetime(2007,10,11),'Peak of bull market'), 56 (datetime(2008,3,12),'Bear Stearns Fails'), 57 (datetime(2008,9,15),'Lehman Bankruptcy')] 58 for date ,label in crisis_data: 59 ax.annotate(label,xy=(date,spx.asof(date) + 75), 60 xytext=(date,spx.asof(date) + 225), 61 arrowprops=dict(facecolor='black',headwidth=4,widtg=2,headlength=4), 62 horizontalalignment='left',verticalalignment='top') 63 ax.set_xlim(['1/1/2007','1/1/2011']) 64 ax.set_ylim([600,1800]) 65 ax.set_title('Important dates in the 2008-2009 financial crisis') 66 #在图表中添加图形,需要生成patch对象shp,并调用ax.add_patch(shp)加入到子图中 67 fig = plt.figure() 68 ax = fig.add_subplot(1,1,1) 69 rect = plt.Rectangle((0.2,0.75),0.4,0.15,color='k',alpha=0.3) 70 circ = plt.Circle((0.7,0.2),0.15,color='b',alpha=0.3) 71 ax.add_patch(rect) 72 ax.add_patch(circ) 73 #将图片保存到文件 74 plt.savefig('figpath.svg') 75 plt.savefig('figpath.png',dpi=400,bbox_inches='tight') 76 #折线图 77 s = pd.Series(np.random.randn(10).cumsum(), index=np.arange(0,100,10)) 78 s.plot() 79 df = pd.DataFrame(np.random.randn(10,4).cumsum(0),columns=['A','B','C','D'],index=np.arange(0,100,10)) 80 df.plot() 81 #柱状图,plot.bar() plot.barh()分别绘制垂直和水平柱状图 82 fig,axes = plot.subplots(2,1) 83 data = pd.Series(np.random.randn(16),index=list('abcdefghijklmnop')) 84 data.plot.bar(ax=axes[0],color='k',alpha=0.7) 85 data.plot.barh(ax=axes[1],color='k',alpha=0.7) 86 87 df = pd.DataFrame(np.random.randn(6,4).cumsum(0),columns=pd.Index['A','B','C','D'],index=['one','two','three','four','five','six'],name='Genus')) 88 df.plot.bar() 89 #堆积柱状图 90 df.plot.barh(stacked=True,alpha=0.9) 91 92 93 tips = pd.read_csv('tips.csv') 94 party_counts = pd.crosstab(tip['day'],tips['size']) 95 party_counts = party_counts.loc[:,2:5] 96 party_pcts = party_counts.div(party_counts.sum(1),axis=0) 97 party_pcts.plot.bar() 98 #使用searborn包 99 import seaborn as sns 100 tips['tip_pct'] = tip['tip'] / (tips['total_bill']-tips['tip']) 101 sns.barplot(x='tip_pct',y = 'day',data=tips,orient='h') 102 #直方图和密度图 103 tips['tip_pct'].plot.hist(bins=50) 104 tips['tip_pct'].plot.density() 105 #散点图或点图 106 macro = pd.read_csv('macrodata.csv') 107 data = macro[['cpi','mi','tbilrate','unemp']] 108 datas = np.log(data).diff().dropna() 109 sns.regplot9'mi','unemp',data=datas) 110 sns.pairplot(datas,diag_kind='kde',plot_kws={'alpha':0.2}) 111 #分面网格和分类数据 112 sns.factorplot(x='day',y='tip_pct',hue='time',col='smoker',kind='bar',data=tips[tips.tip_pct < -1])
参考书籍:利用 python 进行数据分析
作者:舟华520
出处:https://www.cnblogs.com/xfzh193/
本文以学习,分享,研究交流为主,欢迎转载,请标明作者出处!