python繪制雙柱形圖代碼實(shí)例
圖表是比干巴巴的表格更直觀的表達(dá),簡(jiǎn)潔、有力。工作中經(jīng)常遇到的場(chǎng)景是,有一些數(shù)值需要定時(shí)的監(jiān)控,比如服務(wù)器的連接數(shù)、活躍用戶數(shù)、點(diǎn)擊某個(gè)按鈕的人數(shù),并且通過郵件或者網(wǎng)頁(yè)展示出來。當(dāng)我們想關(guān)注比數(shù)值本身更多的信息(像數(shù)值的變化、對(duì)比或異常),圖表就非常有用了。把數(shù)值轉(zhuǎn)化為圖片要依賴第三方庫(kù)的幫忙,在Python之中最好的圖表庫(kù)叫matplotlib。(一直覺得,Python最大的優(yōu)勢(shì)就是豐富的第三方庫(kù),讓你能輕易實(shí)現(xiàn)各種需求)
matplotlib,顧名思義就是提供了一整套和matlab相似的API,它的文檔相當(dāng)完備,示例頁(yè)面提供了上百個(gè)圖表的入門代碼,可以說只有你想不到的,沒有它做不到的。
舉個(gè)稍復(fù)雜的例子,小明和小紅兩個(gè)同學(xué)各有語(yǔ)文、數(shù)學(xué)、英語(yǔ)的課程成績(jī),用一個(gè)雙柱形圖輸出各項(xiàng)成績(jī)的對(duì)比:
#!/usr/bin/env python # coding: utf-8 import matplotlib as mpl mpl.use('Agg') import matplotlib.pyplot as plt import numpy as np # 必須配置中文字體,否則會(huì)顯示成方塊 # 注意所有希望圖表顯示的中文必須為unicode格式 custom_font = mpl.font_manager.FontProperties(fname='/Library/Fonts/華文細(xì)黑.ttf') font_size = 10 # 字體大小 fig_size = (8, 6) # 圖表大小 names = (u'小明', u'小紅') # 姓名 subjects = (u'語(yǔ)文', u'數(shù)學(xué)', u'英語(yǔ)') # 科目 scores = ((65, 90, 75), (85, 80, 90)) # 成績(jī) # 更新字體大小 mpl.rcParams['font.size'] = font_size # 更新圖表大小 mpl.rcParams['figure.figsize'] = fig_size # 設(shè)置柱形圖寬度 bar_width = 0.35 index = np.arange(len(scores[0])) # 繪制「小明」的成績(jī) rects1 = plt.bar(index, scores[0], bar_width, color='#0072BC', label=names[0]) # 繪制「小紅」的成績(jī) rects2 = plt.bar(index + bar_width, scores[1], bar_width, color='#ED1C24', label=names[1]) # X軸標(biāo)題 plt.xticks(index + bar_width, subjects, fontproperties=custom_font) # Y軸范圍 plt.ylim(ymax=100, ymin=0) # 圖表標(biāo)題 plt.title(u'企鵝班同學(xué)成績(jī)對(duì)比', fontproperties=custom_font) # 圖例顯示在圖表下方 plt.legend(loc='upper center', bbox_to_anchor=(0.5, -0.03), fancybox=True, ncol=5, prop=custom_font) # 添加數(shù)據(jù)標(biāo)簽 def add_labels(rects): for rect in rects: height = rect.get_height() plt.text(rect.get_x() + rect.get_width() / 2, height, height, ha='center', va='bottom') # 柱形圖邊緣用白色填充,純粹為了美觀 rect.set_edgecolor('white') add_labels(rects1) add_labels(rects2) # 圖表輸出到本地 plt.savefig('scores_par.png')
最終圖表顯示如下:
總結(jié)
從上面的代碼片段可以了解到:matplotlib是一個(gè)自由度非常高的圖表庫(kù),能夠?qū)崿F(xiàn)從顏色、字體等基礎(chǔ)屬性到圖例、網(wǎng)格等圖表屬性的定制輸出。
以上就是本文關(guān)于python繪制雙柱形圖代碼實(shí)例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
Django admin實(shí)現(xiàn)圖書管理系統(tǒng)菜鳥級(jí)教程完整實(shí)例
python使用pil進(jìn)行圖像處理(等比例壓縮、裁剪)實(shí)例代碼
Python實(shí)現(xiàn)讀取txt文件并畫三維圖簡(jiǎn)單代碼示例
如有不足之處就,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Python Django網(wǎng)頁(yè)界面協(xié)同過濾推薦算法實(shí)現(xiàn)商品管理與推薦
商品管理與推薦系統(tǒng),本系統(tǒng)使用Python作為主要開發(fā)語(yǔ)言,前端采用HTML、CSS、BootStrap等技術(shù)搭建顯示界面,后端采用Django框架處理用戶的請(qǐng)求響應(yīng)2023-11-11Python實(shí)現(xiàn)Matplotlib,Seaborn動(dòng)態(tài)數(shù)據(jù)圖的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何讓Matplotlib、Seaborn的靜態(tài)數(shù)據(jù)圖動(dòng)起來,變得栩栩如生。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2022-05-05基于本地知識(shí)的問答機(jī)器人langchain-ChatGLM 大語(yǔ)言模型實(shí)現(xiàn)方法詳解
這篇文章主要介紹了基于本地知識(shí)的問答機(jī)器人langchain-ChatGLM 大語(yǔ)言模型實(shí)現(xiàn)方法,結(jié)合具體實(shí)例形式詳細(xì)分析了langchain-ChatGLM的功能、原理、部署方法與操作注意事項(xiàng),需要的朋友可以參考下2023-07-07如何利用python的tkinter實(shí)現(xiàn)一個(gè)簡(jiǎn)單的計(jì)算器
這篇文章主要給大家介紹了關(guān)于如何利用python的tkinter實(shí)現(xiàn)一個(gè)簡(jiǎn)單的計(jì)算器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Python數(shù)據(jù)處理利器Pandas?DataFrame常用操作
這篇文章主要為大家介紹了Python數(shù)據(jù)處理利器Pandas?DataFrame,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06python非阻塞式后臺(tái)如何運(yùn)行bat腳本
這篇文章主要介紹了python非阻塞式后臺(tái)如何運(yùn)行bat腳本問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06Python實(shí)現(xiàn)購(gòu)物程序思路及代碼
本文給大家分享的是使用Python實(shí)現(xiàn)的購(gòu)物小程序的思路要求以及相關(guān)代碼,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下2017-07-07