zoukankan      html  css  js  c++  java
  • 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/

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

  • 相关阅读:
    MongoDB数据库学习总结
    windows及linux环境下永久修改pip镜像源的方法
    enumerate枚举函数
    sum求和函数
    zip拉链函数
    python实现面对面快传
    redis实现发布订阅
    python自定义classmethod
    Nginx为什么支持那么高的并发量?
    java进阶(28)--Map集合
  • 原文地址:https://www.cnblogs.com/xfzh193/p/12120384.html
Copyright © 2011-2022 走看看