【Python】用matplotlib画条形图

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()

结果:

 

posted @ 2021-06-24 10:11  山鬼谣`  阅读(416)  评论(0)    收藏  举报