摘要:圖表是比干巴巴的表格更直觀的表達(dá),簡(jiǎn)潔有力。當(dāng)我們想關(guān)注比數(shù)值本身更多的信息像數(shù)值的變化對(duì)比或異常,圖表就非常有用了。把數(shù)值轉(zhuǎn)化為圖片要依賴第三方庫(kù)的幫忙,在之中最好的圖表庫(kù)叫。
圖表是比干巴巴的表格更直觀的表達(dá),簡(jiǎn)潔、有力。工作中經(jīng)常遇到的場(chǎng)景是,有一些數(shù)值需要定時(shí)的監(jiān)控,比如服務(wù)器的連接數(shù)、活躍用戶數(shù)、點(diǎn)擊某個(gè)按鈕的人數(shù),并且通過(guò)郵件或者網(wǎng)頁(yè)展示出來(lái)。當(dāng)我們想關(guān)注比數(shù)值本身更多的信息(像數(shù)值的變化、對(duì)比或異常),圖表就非常有用了。把數(shù)值轉(zhuǎn)化為圖片要依賴第三方庫(kù)的幫忙,在Python之中最好的圖表庫(kù)叫matplotlib。(一直覺(jué)得,Python最大的優(yōu)勢(shì)就是豐富的第三方庫(kù),讓你能輕易實(shí)現(xiàn)各種需求)
matplotlib,顧名思義就是提供了一整套和matlab相似的API,它的文檔相當(dāng)完備,示例頁(yè)面提供了上百個(gè)圖表的入門代碼,可以說(shuō)只有你想不到的,沒(méi)有它做不到的。
舉個(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)格等圖表屬性的定制輸出。
來(lái)自:建造者說(shuō)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37670.html
摘要:可選的值有,和。布局類型或即水平布局和垂直布局默認(rèn)是設(shè)定圖例在圖表區(qū)中的水平對(duì)齊方式,合法值有,和。垂直位置可以通過(guò)選項(xiàng)做進(jìn)一步設(shè)定。 showImg(https://segmentfault.com/img/remote/1460000012009745?w=1240&h=653); showImg(https://segmentfault.com/img/remote/146000...
摘要:可選的值有,和。布局類型或即水平布局和垂直布局默認(rèn)是設(shè)定圖例在圖表區(qū)中的水平對(duì)齊方式,合法值有,和。垂直位置可以通過(guò)選項(xiàng)做進(jìn)一步設(shè)定。 showImg(https://segmentfault.com/img/remote/1460000012009745?w=1240&h=653); showImg(https://segmentfault.com/img/remote/146000...
摘要:餅狀圖將數(shù)據(jù)用切割成份的圓來(lái)展示。至于半徑,我們用寬度的一半與高度的一半的較小值,因?yàn)槲覀儾幌胱岋灎顖D超出。結(jié)果看起來(lái)如下這樣繪制圓環(huán)圖我們已經(jīng)看到如何創(chuàng)建餅狀圖。怎樣畫洞呢我們可以畫一個(gè)白色的圓在餅狀圖上。 showImg(https://segmentfault.com/img/bVObDh?w=850&h=362); 原文:https://code.tutsplus.com/zh...
閱讀 876·2021-10-25 09:45
閱讀 3305·2021-09-22 14:58
閱讀 3861·2021-08-31 09:43
閱讀 924·2019-08-30 15:55
閱讀 924·2019-08-29 13:51
閱讀 1237·2019-08-29 13:02
閱讀 3493·2019-08-29 12:52
閱讀 1968·2019-08-26 13:27