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/

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

  • 相关阅读:
    Codeforces 992C(数学)
    Codeforces 990C (思维)
    Codeforces 989C (构造)
    POJ 1511 Invitation Cards(链式前向星,dij,反向建边)
    Codeforces 1335E2 Three Blocks Palindrome (hard version)(暴力)
    POJ 3273 Monthly Expense(二分)
    POJ 2566 Bound Found(尺取前缀和)
    POJ 1321 棋盘问题(dfs)
    HDU 1506 Largest Rectangle in a Histogram(单调栈)
    POJ 2823 Sliding Window(单调队列)
  • 原文地址:https://www.cnblogs.com/xfzh193/p/12120384.html
Copyright © 2011-2022 走看看