網站首頁 編程語言 正文
1. 條形圖的繪制
plt.bar 方法有以下常用參數:
-
x
:一個數組或者列表,代表需要繪制的條形圖的x軸的坐標點。 -
height
:一個數組或者列表,代表需要繪制的條形圖y軸的坐標點。 -
width
:每一個條形圖的寬度,默認是0.8的寬度。 -
bottom
: y 軸的基線,默認是0,也就是距離底部為0. -
align
:對齊方式,默認是 center ,也就是跟指定的 x 坐標居中對齊,還有為 edge ,靠 - 邊對齊,具體靠右邊還是靠左邊,看
width
的正負。 - ?
color
:條形圖的顏色。
返回值為 BarContainer ,是一個存儲了條形圖的容器,而條形圖實際上的類型
是 matplotlib.patches.Rectangle 對象。
更多參考
比如現在有 2019 年賀歲片票房的數據(數據來源)
#票房單位億元 movies = { ?"流浪地球":40.78, ?"飛馳人生":15.77, ?"瘋狂的外星人":20.83, ?"新喜劇之王":6.10, ?"廉政風云":1.10, ?"神探蒲松齡":1.49, ?"小豬佩奇過大年":1.22, ?"熊出沒·原始時代":6.71 }
用條形圖繪制每部電影及其票房的代碼如下:
movies = { ? ? "流浪地球":40.78, ? ? "飛馳人生":15.77, ? ? "瘋狂的外星人":20.83, ? ? "新喜劇之王":6.10, ? ? "廉政風云":1.10, ? ? "神探蒲松齡":1.49, ? ? "小豬佩奇過大年":1.22, ? ? "熊出沒·原始時代":6.71 } x = list(movies.keys()) y = list(movies.values()) plt.figure(figsize=(15,5)) # plt.bar(x,y,width=-0.3,align="edge",color='r',edgecolor='k') movie_df = pd.DataFrame(data={"names":list(movies.keys()),"tickets":list(movies.values())}) plt.bar("names","tickets",data=movie_df) plt.xticks(fontproperties=font,size=12) plt.yticks(range(0,45,5),["%d億"%x for x in range(0,45,5)],fontproperties=font,size=12) plt.grid()
其中 xticks
和 yticks
的用法跟之前的折線圖一樣。這里新出現的方法是 bar , bar 常用的有3個參數,分別是 x (x軸的坐標點), y (y軸的坐標點)以及 width (條形的寬度)。
2. 橫向條形圖
橫向條形圖需要使用plt.barh
這個方法跟 bar 非常的類似,只不過把方向進行旋轉。參數
跟 bar 類似,但也有區別。
如下:
- y :數組或列表,代表需要繪制的條形圖在 y 軸上的坐標點。
- width :數組或列表,代表需要繪制的條形圖在 x 軸上的值(也就是長度)。
- height :條形圖的高度,默認是0.8。
- left :條形圖的基線,也就是距離y軸的距離。
其他參數跟 bar 一樣。
返回值也是 BarContainer
容器對象。
還是以以上數據為例,將電影名和票房反轉一下。
示例代碼如下:
plt.barh(list(movies.keys()),list(movies.values())) plt.yticks(fontproperties=font,size=12)
3. 分組條形圖
現在有一組數據,是2019年春節賀歲片前五天的電影票房記錄。
示例代碼如下:
movies = { ? ? "流浪地球":[2.01,4.59,7.99,11.83,16], ? ? "飛馳人生":[3.19,5.08,6.73,8.10,9.35], ? ? "瘋狂的外星人":[4.07,6.92,9.30,11.29,13.03], ? ? "新喜劇之王":[2.72,3.79,4.45,4.83,5.11], ? ? "廉政風云":[0.56,0.74,0.83,0.88,0.92], ? ? "神探蒲松齡":[0.66,0.95,1.10,1.17,1.23], ? ? "小豬佩奇過大年":[0.58,0.81,0.94,1.01,1.07], ? ? "熊出沒·原始時代":[1.13,1.96,2.73,3.42,4.05] } plt.figure(figsize=(20,8)) width = 0.75 bin_width = width/5 movie_pd = pd.DataFrame(movies) ind = np.arange(0,len(movies)) # 第一種方案 # first_day = movie_pd.iloc[0] # plt.bar(ind-bin_width*2,first_day,width=bin_width,label='第一天') # second_day = movie_pd.iloc[1] # plt.bar(ind-bin_width,second_day,width=bin_width,label='第二天') # third_day = movie_pd.iloc[2] # plt.bar(ind,third_day,width=bin_width,label='第三天') # four_day = movie_pd.iloc[3] # plt.bar(ind+bin_width,four_day,width=bin_width,label='第四天') # five_day = movie_pd.iloc[4] # plt.bar(ind+bin_width*2,five_day,width=bin_width,label='第五天') # 第二種方案 for index in movie_pd.index: ? ? day_tickets = movie_pd.iloc[index] ? ? xs = ind-(bin_width*(2-index)) ? ? plt.bar(xs,day_tickets,width=bin_width,label="第%d天"%(index+1)) ? ? for ticket,x in zip(day_tickets,xs): ? ? ? ? plt.annotate(ticket,xy=(x,ticket),xytext=(x-0.1,ticket+0.1)) # 設置圖例 plt.legend(prop=font) plt.ylabel("單位:億",fontproperties=font) plt.title("春節前5天電影票房記錄",fontproperties=font) # 設置x軸的坐標 plt.xticks(ind,movie_pd.columns,fontproperties=font) plt.xlim plt.grid(True) plt.show()
4. 堆疊條形圖
堆疊條形圖,是將一組相關的條形圖堆疊在一起進行比較的條形圖。
比如以下案例:
menMeans = (20, 35, 30, 35, 27) womenMeans = (25, 32, 34, 20, 25) groupNames = ('G1','G2','G3','G4','G5') plt.bar(groupNames,menMeans,label="男性得分") plt.bar(groupNames,womenMeans,bottom=menMeans,label='女性得分') plt.legend(prop=font)
在繪制女性得分的條形圖的時候,因為要堆疊在男性得分的條形圖上,所以使用到了一
個 bottom
參數,就是距離 x 軸的距離。通過對貼條形圖,我們就可以清楚的知道,哪一個隊伍的綜合排名是最高的,并且在每個隊伍中男女的得分情況。
5. 條形圖應用場景
- 數量統計。
- 頻率統計。
- 適用于分類數據對比。
- 垂直條形圖最多不超過12個分類(也就是12個柱形),橫向條形圖最多不超過30個分類。如果垂直條形圖的分類名太長,那么建議換成橫向條形圖。
- 柱狀圖不適合表示趨勢,如果想要表示趨勢,應該使用折線圖。
原文鏈接:https://blog.csdn.net/weixin_44327634/article/details/123639006
相關推薦
- 2022-11-24 React?hooks使用方法全面匯總_React
- 2022-07-21 各數據庫SQL查詢結果多行數據合并成一行
- 2023-03-27 Python?tkinter中label控件動態改變值問題_python
- 2022-09-05 內置指令、自定義指令(詳細)、全局指令與局部指令
- 2022-03-21 C語言打印正方形實例代碼_C 語言
- 2022-06-12 Linux中rm命令使用以及C/C++代碼實現_C 語言
- 2022-04-24 .NET?CORE?鑒權的實現示例_實用技巧
- 2022-07-19 react組件通訊的基本使用props
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支