成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python繪制精美圖表之雙柱形圖

beita / 2523人閱讀

摘要:圖表是比干巴巴的表格更直觀的表達(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

相關(guān)文章

  • AAChartKit--- 強(qiáng)大、精美、易用的開(kāi)源iOS圖表庫(kù)

    摘要:可選的值有,和。布局類型或即水平布局和垂直布局默認(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...

    eechen 評(píng)論0 收藏0
  • AAChartKit--- 強(qiáng)大、精美、易用的開(kāi)源iOS圖表庫(kù)

    摘要:可選的值有,和。布局類型或即水平布局和垂直布局默認(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...

    104828720 評(píng)論0 收藏0
  • 怎樣用JavaScript和HTML5 Canvas繪制圖表

    摘要:餅狀圖將數(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...

    doodlewind 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<