<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
條形圖是用寬度相同的條形的高度或長短來表示資料多少的圖形。用來繪製離散的資料,能夠一眼看出各個資料的大小,比較資料之間的差異。
繪製一個簡單的條形圖與折線圖的繪製方法也是大體一致,只需要把擬合方式plt.plot()修改為plt.bar()即可。例如繪製2017年內地電影票房前20的電影和電影票房資料,如何對資料進行視覺化分析呢?無疑是進行條形圖分析。
老規矩,上程式碼:
# coding =utf-8 from matplotlib import pyplot as plt from matplotlib import font_manager my_font = font_manager.FontProperties(fname="C:WindowsFontsMSYHL.TTC") a = ['戰狼2', '速度與激情8', '功夫瑜伽', '西遊伏妖篇', '變形金剛5:最後的騎士', '摔跤吧,爸爸', '加勒比海盜5:死無對證', '金剛:骷髏島', '極限特工:終極迴歸', '生化危機6:終章', '乘風破浪', '神偷奶爸3', '智取威虎山', '大鬧天竺', '金剛狼3:殊死一戰', '蜘蛛俠:英雄歸來', '悟空傳', '銀河護衛隊2', '情聖', '新木乃伊'] 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, 15), dpi=80) # 繪製條形圖 plt.bar(range(len(a)), b, width=1) # 設定字串到X軸 plt.xticks(range(len(a)), a, fontproperties=my_font, rotation=90) # 顯示圖形 plt.show()
結果如下:
程式分析:可以看出,繪製的方法與折線圖、散點圖大體一致,只是把擬合的方式改成了plt.bar(),其餘的大體一致。不過需要注意的是這個散點圖需要設定每個條柱的寬度不能超過1,否則會出現混疊!
大家可以發現,這個電影的名字在下方並不好看,對做資料分析的人並不友好,那麼就需要將上述的豎條形圖轉變成橫條形圖。具體方法很簡單,只需要將豎條形圖的plt.bar()改為plt.barh()即可。完整程式碼如下:
# coding =utf-8 from matplotlib import pyplot as plt from matplotlib import font_manager my_font = font_manager.FontProperties(fname="C:WindowsFontsMSYHL.TTC") a = ['戰狼2', '速度與激情8', '功夫瑜伽', '西遊伏妖篇', '變形金剛5:最後的騎士', '摔跤吧,爸爸', '加勒比海盜5:死無對證', '金剛:骷髏島', '極限特工:終極迴歸', '生化危機6:終章', '乘風破浪', '神偷奶爸3', '智取威虎山', '大鬧天竺', '金剛狼3:殊死一戰', '蜘蛛俠:英雄歸來', '悟空傳', '銀河護衛隊2', '情聖', '新木乃伊'] 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) # 繪製條形圖 plt.barh(range(len(a)), b, height=0.3, color='orange') # 區別於豎的條形圖 不能使用width # 設定字串到X軸 plt.yticks(range(len(a)), a, fontproperties=my_font) plt.grid(alpha=0.3) # 儲存圖片 plt.savefig('./movie.png') # 顯示圖形 plt.show()
執行結果如下:
可以看得出,橫條形圖在這裡效果比豎條形圖效果好,更容易觀測與分析。使用時需要根據實際情況進行斟酌,合理選取。
那麼問題又來了,如果我們知道了四部電影:猩球崛起3:終極之戰、敦煌爾克、蜘蛛俠:英雄歸來、戰狼2在三天之內的票房數目,想知道電影本身在這三天自己的票房變化,怎麼來繪製條形圖呢?
先上程式碼:
from matplotlib import pyplot as plt from matplotlib import font_manager my_font = font_manager.FontProperties(fname="C:WindowsFontsMSYHL.TTC") a = ['猩球崛起3:終極之戰', '敦刻爾克', '蜘蛛俠:英雄歸來', '戰狼2'] b_16 = [15746, 312, 4497, 319] b_15 = [12357, 156, 2045, 168] b_14 = [2358, 399, 2358, 362] bar_width = 0.2 # 乘以3小於1 # 設定相鄰的寬度 x_14 =list(range(len(a))) x_15 = [i+bar_width for i in x_14] x_16 = [i+bar_width*2 for i in x_14] # 設定影象大小 plt.figure(figsize=(20,8),dpi=80) # 設定X軸 plt.xticks(x_15,a,fontproperties=my_font) # 繪製影象 設定條形圖寬度 plt.bar(range(len(a)), b_14, width=bar_width, label='9月14日') plt.bar(x_15, b_15, width=bar_width, label='9月15日') plt.bar(x_16, b_16, width=bar_width, label='9月16日') # 設定圖例 plt.legend(prop=my_font) # 顯示影象 plt.show()
執行結果如下:
程式分析:可以看出來,上圖很好的完成了題目的要求。猩球崛起3:終極之戰的三日票房最高,同時三日票房總數呈現上升趨勢;敦刻爾克與戰狼2的電影票房總體都比較低;蜘蛛俠:英雄歸來的票房雖然不多,但有上升趨勢,票房數目中等。那麼是怎麼進行操作的呢?相當於在一幅圖中繪製三個直方圖,也就是四個電影在三天的票房數目。通過將寬度設定,實現三個直方圖的無縫連線,使得形成一部電影在三天的票房數目的對比效果。即第一個條形圖開始,第二個條形圖起始點加上一個條形圖的寬度,第三個條形圖加上兩個條形圖的寬度,然後形成三個直方圖的剛好契合。需要注意的是:這個每個直方圖的寬度不能超過1/3,也就是三個重疊在一起寬度不能超過1,否則會形成條形圖混疊。如下圖:
總結:條形圖繪製的要點就是使用plt.bar()或者plt.barh(),一定要注意條形圖寬度的設定,不能超過1,否則會混疊,影響效果,達不到目標要求。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45