python绘图

  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/

本文以学习,分享,研究交流为主,欢迎转载,请标明作者出处!

posted on 2019-12-30 16:30  舟华  阅读(351)  评论(0编辑  收藏  举报

导航