当前位置:   article > 正文

【数据可视化实验-1】类别比较性数据可视化之柱形图_实验内容: 自选数据分别绘制单数据系列柱形图、多数据系列柱形图、堆积柱形 图和

实验内容: 自选数据分别绘制单数据系列柱形图、多数据系列柱形图、堆积柱形 图和
实验内容:
自选数据分别绘制单数据系列柱形图、多数据系列柱形图、堆积柱形
图和百分比柱形图。
实验要求:
自选类别比较型数据集,分别选取单数据系列数据和多数据系列数据。
实验目的:
理解类别比较型图表,熟练绘制柱形图。
  1. from matplotlib import cm,colors
  2. from matplotlib import pyplot as plt
  3. from matplotlib.pyplot import figure, show, rc
  4. import numpy as np
  5. import pandas as pd
  6. plt.rcParams["font.sans-serif"]='SimHei'
  7. plt.rcParams['axes.unicode_minus']=False
  8. plt.rc('axes',axisbelow=True)
  1. #单数据系列柱形图
  2. mydata=pd.DataFrame({'Cut':["Fair","Good","Very Good","Premium","Ideal"], 'Price':[4300,3800,3950,4700,3500]})
  3. Sort_data=mydata.sort_values(by='Price', ascending=False)
  4. fig=plt.figure(figsize=(6,7),dpi=70)
  5. plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)
  6. plt.grid(axis="y",c=(217/256,217/256,217/256))
  7. ax = plt.gca()
  8. ax.spines['top'].set_color('none')
  9. ax.spines['right'].set_color('none')
  10. ax.spines['left'].set_color('none')
  11. plt.bar(Sort_data['Cut'],Sort_data['Price'],width=0.6,align="center",label="Cut")
  12. plt.ylim(0,6000)
  13. plt.xlabel('Cut')
  14. plt.ylabel('Price')
  15. plt.savefig("单数据系列柱形图.jpg")

 

  1. #双数据系列柱形图
  2. df=pd.read_csv('MultiColumn_Data.csv')
  3. df=df.sort_values(by='1996', ascending=False)
  4. x_label=np.array(df["Catergory"])
  5. x=np.arange(len(x_label))
  6. y1=np.array(df["1996"])
  7. y2=np.array(df["1997"])
  8. fig=plt.figure(figsize=(5,5))
  9. plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)
  10. plt.bar(x,y1,width=0.3,color='r',label='1996',edgecolor='k', linewidth=0.25)
  11. plt.bar(x+0.3,y2,width=0.3,color='b',label='1997',edgecolor='k', linewidth=0.25)
  12. plt.xticks(x+0.15,x_label,size=12)
  13. plt.legend(loc=(1,0.5),ncol=1,frameon=False)
  14. plt.yticks(size=12)
  15. plt.grid(axis="y",c=(217/256,217/256,217/256))
  16. ax = plt.gca()
  17. ax.spines['top'].set_color('none')
  18. ax.spines['right'].set_color('none')
  19. ax.spines['left'].set_color('none')
  20. plt.savefig("双数据系列柱形图.jpg")

 

  1. #堆积柱形图
  2. df=pd.read_csv('StackedColumn_Data.csv')
  3. df=df.set_index("Clarity")
  4. Sum_df=df.apply(lambda x: x.sum(), axis=0).sort_values(ascending=False)
  5. df=df.loc[:,Sum_df.index]
  6. meanRow_df=df.apply(lambda x: x.mean(), axis=1)
  7. Sing_df=meanRow_df.sort_values(ascending=False).index
  8. n_row,n_col=df.shape
  9. x_value=np.arange(n_col)
  10. cmap=cm.get_cmap('YlOrRd_r',n_row)
  11. color=[colors.rgb2hex(cmap(i)[:3]) for i in range(cmap.N)]
  12. bottom_y=np.zeros(n_col)
  13. fig=plt.figure(figsize=(5,5))
  14. for i in range(n_row):
  15. label=Sing_df[i]
  16. plt.bar(x_value,df.loc[label,:],bottom=bottom_y,width=0.5,color=color[i],label=label,edgecolor='k', linewidth=0.25)
  17. bottom_y=bottom_y+df.loc[label,:].values
  18. plt.xticks(x_value,df.columns,size=10)
  19. plt.legend(loc=(1,0.3),ncol=1,frameon=False)
  20. plt.grid(axis="y",c=(166/256,166/256,166/256))
  21. ax = plt.gca()
  22. ax.spines['top'].set_color('none')
  23. ax.spines['right'].set_color('none')
  24. ax.spines['left'].set_color('none')

 

  1. #百分比柱形图
  2. df=pd.read_csv('StackedColumn_Data.csv')
  3. df=df.set_index("Clarity")
  4. SumCol_df=df.apply(lambda x: x.sum(), axis=0)
  5. df=df.apply(lambda x: x/SumCol_df, axis=1)
  6. meanRow_df=df.apply(lambda x: x.mean(), axis=1)
  7. Per_df=df.loc[meanRow_df.idxmax(),:].sort_values(ascending=False)
  8. Sing_df=meanRow_df.sort_values(ascending=False).index
  9. df=df.loc[:,Per_df.index]
  10. n_row,n_col=df.shape
  11. x_value=np.arange(n_col)
  12. cmap=cm.get_cmap('YlOrRd_r',n_row)
  13. color=[colors.rgb2hex(cmap(i)[:3]) for i in range(cmap.N) ]
  14. bottom_y=np.zeros(n_col)
  15. fig=plt.figure(figsize=(5,5))
  16. for i in range(n_row):
  17. label=Sing_df[i]
  18. plt.bar(x_value,df.loc[label,:],bottom=bottom_y,width=0.5,color=color[i],label=label,edgecolor='k', linewidth=0.25)
  19. bottom_y=bottom_y+df.loc[label,:].values
  20. plt.xticks(x_value,df.columns,size=10)
  21. plt.gca().set_yticklabels(['{:.0f}%'.format(x*100) for x in plt.gca().get_yticks()])
  22. plt.legend(loc=(1,0.3),ncol=1,frameon=False)
  23. plt.grid(axis="y",c=(166/256,166/256,166/256))
  24. ax = plt.gca()
  25. ax.spines['top'].set_color('none')
  26. ax.spines['right'].set_color('none')
  27. ax.spines['left'].set_color('none')

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/426587
推荐阅读
相关标签
  

闽ICP备14008679号