1. 程式人生 > 其它 >【Python】用matplotlib畫條形圖

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

結果: