1. 程式人生 > >Matplotlib繪圖專案(四):2017年內地電影和票房資料情況(條形圖)

Matplotlib繪圖專案(四):2017年內地電影和票房資料情況(條形圖)

需求:
  • 繪製2017年內地電影票房前20的電影和票房資料情況條形圖
  • 另外,單拎出4部電影,每部電影3天的票房資料, 展示電影本身的票房以及同其他電影的資料對比情況
難點:
  • 條形圖語法
  • x軸座標的寬度值如何選取
# 假設你獲取到了2017年內地電影票房前20的電影(列表a)和電影票房資料(列表b),那麼如何更加直觀的展示該資料?

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'
] = False # 不加u也可以 a = ["戰狼2","速度與激情8","功夫瑜伽","西遊伏妖篇","變形金剛5:最後的騎士","摔跤吧!爸爸","加勒比海盜5:死無對證","金剛:骷髏島", "極限特工:終極迴歸","生化危機6: 終章","乘風破浪","神偷奶爸3","智取威虎山","大鬧天竺","金剛狼3:殊死一戰","蜘蛛俠:英雄歸來","悟空傳", "銀河護衛隊2","情聖","新木乃伊"] print(len(a),len(b)) _x = range(len(a)) b = [56.01,26.94,17.53,16.49,15.45,12.96
,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23] plt.figure(figsize=(20, 8), dpi = 80) # rotation不用加度,數值就行 plt.xticks(_x,a, rotation = 45) # width的預設寬度是0.8 plt.bar(_x, b, width = 0.5, color = 'pink') plt.ylabel('電影票房(億)') plt.title('2017年度內地電影票房top20') plt.show()

在這裡插入圖片描述

# 需求:單拎出4部電影,每部電影3天的票房資料, 展示電影本身的票房以及同其他電影的資料對比情況
# 挑選出4部電影 a = ["猩球崛起3:終極之戰","敦刻爾克","蜘蛛俠:英雄歸來","戰狼2"] print(len(a)) # 2017年9月14,15,16日三天,這4部電影的票房 b_16 = [15746,312,4497,319] b_15 = [12357,156,2045,168] b_14 = [2358,399,2358,362] # 0.3,就設為變數值,發現0.5就太寬了,就會和後面重合 bar_width = 0.2 x_14 = list(range(len(a))) x_15 = [i+bar_width for i in x_14] x_16 = [i+bar_width for i in x_15] plt.figure(figsize = (20, 8), dpi = 80) # 設完bar_width後,發現x軸座標還是有問題 # 寬度值調節,顏色調節,x軸的資料需要考慮到寬度 # plt.bar(a, b_14, width = 0.5, color = 'pink') # plt.bar(a, b_15, width = 0.5, color = 'pink') # plt.bar(a, b_16, width = 0.5, color = 'pink') # 別忘了加label屬性 plt.bar(x_14, b_14, width = bar_width, color = 'pink', label = '9月14日') plt.bar(x_15, b_15, width = bar_width, color = 'red', label = '9月15日') plt.bar(x_16, b_16, width = bar_width, color = 'purple', label = '9月16日') # 設定x軸刻度,中間的紅色的條形,用它來跟電影名相對應! plt.xticks(x_15, a) # 圖例 plt.legend(loc = 'upper right') # 發現直方圖是沒有圖例的:No handles with labels found to put in legend.因為你在聯立時沒有加label屬性!!!沒加屬性自然不會有圖例 # 描述資訊 plt.xlabel('電影名') plt.ylabel('電影票房(元)') plt.title("選取4部電影比較3天票房資料") plt.show()
x軸刻度有問題的圖:

在這裡插入圖片描述

終圖:

在這裡插入圖片描述