彩色多變量疊加條形圖
分別為多變量所代表的圖形設置顏色:
r_list = [255, 123, 223, 167, 32] g_list = [218, 222, 99, 245, 230] b_list = [185, 173, 71, 238, 250]
繪制第一個變量的條形圖,然后for循環繪制其余變量的條形圖:
plt.bar(list(dict_unit.keys()), co_dict[1], width=0.8, color=(255/255, 105/255, 185/255), label=list(dict_co.keys())[0])
for i in range(2, len(co_dict.keys()) + 1): plt.bar(list(dict_unit.keys()), co_dict[i], width=0.8, color=(r_list[i-2]/255, g_list[i-2]/255, b_list[i-2]/255), bottom=co_dict[i-1], label=list(dict_co.keys())[i-1])
添加x、y軸的標簽:
1 plt.xticks(list(dict_unit.keys()), rotation=80) 2 plt.xlabel('所在單位', fontdict={'weight': 'normal', 'size': 12}) 3 plt.ylabel('數量Num', fontdict={'weight': 'normal', 'size': 12}) 4 plt.ylim(0, 7) # y軸取值范圍 5 ax = plt.gca() 6 y_major_locator = plt.MultipleLocator(1) # 調整間隔為1 7 ax.yaxis.set_major_locator(y_major_locator)
效果:
例子完整代碼:

1 # 直方圖 bins指定直方圖條數,edgecolor指定直方圖的邊框色 2 plt.figure(figsize=(9, 24)) 3 # fig, ax = plt.subplots(9, 100) 4 # data.plot(kind = 'hist', bins = 20, color = 'blue', edgecolor = 'black', density = True, label = '直方圖') 5 6 ''' 7 plt.bar(list(dict_au.keys()), list(dict_au.values()), width=0.9, color='lightsteelblue', label='頻次直方圖') 8 #plt.plot(range(51), list(dict_au.values()), marker = 'o', color = 'coral') #coral 9 plt.xticks(list(dict_au.keys()), rotation=80) 10 # 密度圖 11 #data.plot(kind = 'kde', color = 'red', label = '核密度圖') 12 13 plt.xlabel('作者名Name', fontdict={'weight':'normal','size': 12}) 14 plt.ylabel('頻次Num', fontdict={'weight':'normal','size': 12}) 15 16 plt.ylim(0, 4) # y軸取值范圍 17 ax=plt.gca() 18 y_major_locator = plt.MultipleLocator(1) # 調整間隔為1 19 ax.yaxis.set_major_locator(y_major_locator) 20 21 plt.title('作者出現頻次統計', fontdict={'weight':'bold','size': 16}) 22 ''' 23 24 ''' 25 plt.bar(list(dict_co.keys()), list(dict_co.values()), width=0.9, color='lightsteelblue', label='頻次直方圖') 26 plt.xticks(list(dict_co.keys()), rotation=80) 27 plt.xlabel('國家Country', fontdict={'weight':'normal','size': 12}) 28 plt.ylabel('頻次Num', fontdict={'weight':'normal','size': 12}) 29 plt.ylim(0, 33) # y軸取值范圍 30 ax=plt.gca() 31 y_major_locator = plt.MultipleLocator(2) # 調整間隔為1 32 ax.yaxis.set_major_locator(y_major_locator) 33 plt.title('作者所在國家頻次統計', fontdict={'weight':'bold','size': 16}) 34 ''' 35 36 ''' 37 plt.bar(list(dict_unit.keys()), list(dict_unit.values()), width=0.9, color='lightsteelblue', label='頻次直方圖') 38 plt.xticks(list(dict_unit.keys()), rotation=80) 39 plt.xlabel('單位Unit', fontdict={'weight':'normal','size': 12}) 40 plt.ylabel('頻次Num', fontdict={'weight':'normal','size': 12}) 41 plt.ylim(0, 7) # y軸取值范圍 42 ax=plt.gca() 43 y_major_locator = plt.MultipleLocator(1) # 調整間隔為1 44 ax.yaxis.set_major_locator(y_major_locator) 45 plt.title('作者所在單位頻次統計', fontdict={'weight':'bold','size': 16}) 46 ''' 47 48 r_list = [255, 123, 223, 167, 32] 49 g_list = [218, 222, 99, 245, 230] 50 b_list = [185, 173, 71, 238, 250] 51 52 plt.bar(list(dict_unit.keys()), co_dict[1], width=0.8, color=(255/255, 105/255, 185/255), label=list(dict_co.keys())[0]) 53 54 for i in range(2, len(co_dict.keys()) + 1): 55 plt.bar(list(dict_unit.keys()), co_dict[i], width=0.8, color=(r_list[i-2]/255, g_list[i-2]/255, b_list[i-2]/255), 56 bottom=co_dict[i-1], label=list(dict_co.keys())[i-1]) 57 58 plt.xticks(list(dict_unit.keys()), rotation=80) 59 plt.xlabel('所在單位', fontdict={'weight': 'normal', 'size': 12}) 60 plt.ylabel('數量Num', fontdict={'weight': 'normal', 'size': 12}) 61 plt.ylim(0, 7) # y軸取值范圍 62 ax = plt.gca() 63 y_major_locator = plt.MultipleLocator(1) # 調整間隔為1 64 ax.yaxis.set_major_locator(y_major_locator) 65 plt.title('所有單位的作者所在國家分布', fontdict={'weight': 'bold', 'size': 16}) 66 67 plt.subplots_adjust(left=0.1, bottom=0.3, right=0.9, top=0.9, hspace=1, wspace=1) # 調整顯示大小,左和下為邊界,右和上為大小 68 69 plt.legend() 70 71 plt.savefig("result.png", format='png') 72 plt.show()