【Python】用matplotlib画条形图
时间:2021-06-24 18:08:55
收藏:0
阅读:0
1.简单图形
数据:
代码:
import pandas as pd import matplotlib.pyplot as plt catering = r‘C:\Users\xxx\Desktop\data\课题.xls‘ df = pd.read_excel(catering) plt.rcParams[‘font.sans-serif‘] = ‘SimHei‘#中文字体 plt.rcParams[‘axes.unicode_minus‘] = False #负号正常显示 ketilist=[] yearlist=[] for ax in range(0,10): yearlist.append(int(df[‘年份‘][ax+0:ax+1])) ketilist.append(int(df[‘项目(课题)数(项)‘][ax+0:ax+1])) width = 0.5 #条形宽度 # 设置图形大小 plt.figure(figsize=(10,5),dpi=80) plt.bar(yearlist,ketilist,width=width,label="xxx数(项)") #横坐标刻度,高度,宽度,标签(可用于图例) #在条形图上添加数字 for a,b in zip(yearlist,ketilist): plt.text(a, b, b, ha=‘center‘, va= ‘bottom‘,fontsize=14) # 设置图例 #plt.legend() # 设置x轴刻度 plt.xticks(yearlist,yearlist,size = 16) #plt.xlim(2010,2019) #无法完全显示 plt.ylim(0,20000) #不显示右边和上边的边框 plt.gca().spines[‘right‘].set_color(‘none‘) plt.gca().spines[‘top‘].set_color(‘none‘) plt.xlabel(‘年份(年)‘) plt.ylabel(‘xxx数(项)‘) plt.title(‘xxxxxxxxxxxxxxxxxxxxx数‘,size=16) plt.show()
结果:
2.复合图形
数据:
代码:
import pandas as pd import matplotlib.pyplot as plt catering = r‘C:\Users\xxx\Desktop\data\课题.xls‘ df = pd.read_excel(catering) plt.rcParams[‘font.sans-serif‘] = ‘SimHei‘#中文字体 plt.rcParams[‘axes.unicode_minus‘] = False ketilist=[] renyuanlist=[] yearlist=[] for ax in range(0,10): yearlist.append(int(df[‘年份‘][ax+0:ax+1])) ketilist.append(int(df[‘项目(课题)数(项)‘][ax+0:ax+1])) renyuanlist.append(int(df[‘项目(课题)参加人数折合全时当量(人年)‘][ax+0:ax+1])) bar_width = 0.25 x_y = list(range(len(yearlist))) x_keti = list(i+bar_width for i in x_y) x_renyuan = list(i+bar_width for i in x_keti) # 设置图形大小 plt.figure(figsize=(10,5),dpi=80) plt.bar(x_keti,ketilist,width=bar_width,label="课题项目数(项)") plt.bar(x_renyuan,renyuanlist,width=bar_width,label="参加人员折合全时当量(人年)") # 设置图例 plt.legend() # 设置x轴刻度 u = [] for a,b in zip(x_keti,x_renyuan): u.append(a + (b-a)/2) plt.xticks(u,yearlist,size = 16) plt.ylim(5000,25000) #不显示边框 plt.gca().spines[‘right‘].set_color(‘none‘) plt.gca().spines[‘top‘].set_color(‘none‘) plt.xlabel(‘年份(年)‘) plt.title(‘xxx课题及参加人数‘,size=16) plt.show()
结果:
评论(0)