最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Matplotlib可視化之添加讓統(tǒng)計(jì)圖變得簡(jiǎn)單易懂的注釋

 更新時(shí)間:2021年06月11日 09:20:45   作者:盼小輝丶  
今天給大家?guī)?lái)的文章是關(guān)于Python的,文章圍繞著Python Matplotlib可視化展開,文中非常詳細(xì)的介紹了如何給統(tǒng)計(jì)圖添加注釋,需要的朋友可以參考下

一、前言

在系列博文的中,我們已經(jīng)學(xué)習(xí)了如何自定義繪圖的顏色和樣式,以使得繪制更加精美、符合審美要求??梢杂肕atplotlib繪制出復(fù)雜而又精美的統(tǒng)計(jì)圖,但是如果沒(méi)有注釋,我們很難讓其他人明白圖中的點(diǎn)、線究竟代表著什么,有什么樣的含義,也就失去了統(tǒng)計(jì)圖的意義,為了解決這一問(wèn)題,Matplotlib提供了大量對(duì)圖形進(jìn)行注釋的方法,這些注釋方法對(duì)于所有的繪圖函數(shù)(如plt.plot()、plt.scatter()、plt.histogram()等)都是通用的,利用這些注釋可以使統(tǒng)計(jì)圖變得通俗易懂。

二、添加標(biāo)題

從最簡(jiǎn)單的添加標(biāo)題開始:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-4, 4, 10005)
y = 5 * (x + 4.2) * (x + 4.) * (x - 2.5)
plt.title('A polynomial')
plt.plot(x, y, c = 'm')
plt.show()

添加標(biāo)題Tips:

plt.title()函數(shù)接受一個(gè)字符串作為參數(shù)并將其作為整個(gè)圖形的標(biāo)題。

三、為坐標(biāo)軸添加標(biāo)簽

在實(shí)際應(yīng)用中,對(duì)統(tǒng)計(jì)圖坐標(biāo)軸的適當(dāng)描述有助于用戶理解圖形所表達(dá)的含義。

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 8, 1000)
y = 2.0 * x + 0.5 * 5 * x ** 2
plt.title('Acceleration Moving')
plt.xlabel('Time')
plt.ylabel('distance')
plt.plot(x, y, c = 'c')
plt.show()

為坐標(biāo)軸添加標(biāo)簽Tips:

使用plt.xlabel()和plt.ylabel()函數(shù)分別為水平軸和垂直軸添加注釋。

四、添加文本說(shuō)明

雖然我們已經(jīng)學(xué)習(xí)了如何圖形添加標(biāo)題,以及為坐標(biāo)軸添加注釋,但是,很多時(shí)候我們還需要在圖形中添加說(shuō)明文本,來(lái)凸顯圖中點(diǎn)或線的重要性。

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 8, 1000)
y = 2.0 * x + 0.5 * 5 * x ** 2
plt.title('Acceleration Moving')
plt.xlabel('Time')
plt.ylabel('distance')
plt.scatter(x[0],y[0])
plt.text(x[0], y[0], 'start')
plt.plot(x, y, c = 'c')
plt.show()

添加說(shuō)明文本

Tips:plt.text()函數(shù)接受要顯示的位置和文本作為參數(shù)。位置以坐標(biāo)形式給出,其指定了文本框左下角的位置。

五、文本的對(duì)齊方式

文本外圍包含隱式文本框(下文會(huì)介紹文本框的顯示方法),此框用于將文本與傳遞給plt.text()的坐標(biāo)進(jìn)行相對(duì)對(duì)齊。使用verticalalignmenthorizontalalignment參數(shù)(它們分別可以簡(jiǎn)寫為vaha)控制對(duì)齊的方式。
垂直對(duì)齊選項(xiàng)如下所示:

參數(shù)值 說(shuō)明
center 參數(shù)坐標(biāo)相對(duì)于文本框的中心
top 參數(shù)坐標(biāo)相對(duì)于文本框的上側(cè)
bottom 參數(shù)坐標(biāo)相對(duì)于文本框的底部
baseline 參數(shù)坐標(biāo)相對(duì)于文本的基線
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 8, 1000)
y = 2.0 * x + 0.5 * 5 * x ** 2
x_b = np.linspace(0, 8, 1000)
y_b = np.zeros_like(x_b)
plt.title('Acceleration Moving')
plt.xlabel('Time')
plt.ylabel('distance')
plt.scatter(x[0],y[0])
plt.text(0, 0, 'center', va='center')
plt.text(2, 0, 'top', va='top')
plt.text(4, 0, 'bottom', va='bottom')
plt.text(6, 0, 'baseline', va='baseline')
plt.plot(x, y, c = 'c')
plt.plot(x_b, y_b, c = 'm')
plt.show()

垂直對(duì)齊

水平對(duì)齊選項(xiàng)如下所示:

參數(shù)值 說(shuō)明
center 參數(shù)坐標(biāo)相對(duì)于文本框的中心
left 參數(shù)坐標(biāo)相對(duì)于文本框的左側(cè)
right 參數(shù)坐標(biāo)相對(duì)于文本框的右側(cè)
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 8, 1000)
y = 2.0 * x + 0.5 * 5 * x ** 2
y_b = np.linspace(0, 100, 1000)
x_b = np.zeros_like(y_b)
plt.title('Acceleration Moving')
plt.xlabel('Time')
plt.ylabel('distance')
plt.scatter(x[0],y[0])
plt.text(0, 0, 'center', ha='center')
plt.text(0, 50, 'left', ha='left')
plt.text(0, 100, 'right', ha='right')
plt.plot(x, y, c = 'c')
plt.plot(x_b, y_b, c = 'm')
plt.show()

水平對(duì)齊選項(xiàng)

六、文本邊界框

上文介紹了文本外圍包含隱式文本框,為了可以顯式的繪制文本框,plt.plot()支持一個(gè)以字典為輸入的bbox參數(shù),此詞典用于定義文本框的外觀配置:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 8, 1000)
y = 2.0 * x + 0.5 * 5 * x ** 2
box = {
    'facecolor': '.75',
    'edgecolor': 'r',
    'boxstyle': 'round'
}
plt.title('Acceleration Moving')
plt.text(0, 8, 'start', bbox=box)
plt.plot(x, y, c = 'c')
plt.show()

文本邊界框

bbox參數(shù)的字典定義包含以下常見鍵值對(duì):

說(shuō)明與可選值
facecolor 用于設(shè)置文本框背景和邊的顏色
edgecolor 用于設(shè)置文本框邊緣的顏色
alpha 用于設(shè)置透明度級(jí)別,使文本框與背景更好的混合
boxstyle 設(shè)置文本框的樣式,可選值包括"round"和"square"
pad 如果"boxstyle"設(shè)置為"square",則它定義文本和文本框邊之間的填充量

七、添加箭頭

添加文本框當(dāng)然可以幫助注釋圖形,但有時(shí)當(dāng)說(shuō)明文本過(guò)多,并不能清楚的說(shuō)明究竟與圖形的那一部分相對(duì)應(yīng),因此要說(shuō)明圖形中的特定部分,沒(méi)有什么比使用箭頭更好的了,Matplotlib使用plt.annotate()函數(shù)繪制箭頭。

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 8, 1000)
y = 2.0 * x + 0.5 * 5 * x ** 2
plt.annotate('start',
        ha = 'center', va = 'bottom',
        xytext = (2, 30.),
        xy = (0, 0),
        arrowprops = { 'facecolor' : 'black', 'shrink' : 0.05 })
plt.title('Acceleration Moving')
plt.plot(x, y, c = 'c')
plt.show()

添加箭頭

Tips:plt.annotate()函數(shù)在顯示與plt.text()作用相同的說(shuō)明文本文本外,同時(shí)也會(huì)渲染箭頭。要顯示的說(shuō)明文本是第一個(gè)參數(shù);xy參數(shù)指定箭頭的目標(biāo);xytext參數(shù)指定文本位置,同樣可以通過(guò)ha和va參數(shù)來(lái)改變文本對(duì)齊方式
箭頭的樣式由傳遞給arrowprops參數(shù)的字典控制,其中常用的鍵值包括:

說(shuō)明與可選值
arrowstyle 控制箭頭的樣式,可選值包括"<-"、"<"、“wedge”、"simple"和"fancy"等
facecolor 用于設(shè)置箭頭背景和邊的顏色
edgecolor 用于設(shè)置箭頭邊的顏色
alpha 用于設(shè)置透明度級(jí)別,使箭頭與背景更好的混合

收縮參數(shù)控制箭頭端點(diǎn)和箭頭本身之間的間隙。

八、添加圖例

在復(fù)雜圖形中,往往包含大量不同的曲線和點(diǎn),如果這些曲線和點(diǎn)沒(méi)有相應(yīng)的圖例,將無(wú)法對(duì)其進(jìn)行準(zhǔn)確的區(qū)分,因此圖例在實(shí)踐中是必不可少的。
使用plt.legend()函數(shù)以及繪圖函數(shù)的label可選參數(shù),可以添加圖例:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 6, 1024)
data = np.random.standard_normal((150, 2))
print(data.size)
y_1 = np.sin(x)
y_2 = np.cos(x)
plt.xlabel('x')
plt.ylabel('y')
plt.plot(x, y_1, c = 'm', lw = 3., label = 'sin(x)')
plt.plot(x, y_2, c = 'c', lw = 3., ls = '--', label = 'cos(x)')
plt.scatter(data[:,0],data[:,1],c='y', label = 'random')
plt.legend()
plt.show()

添加圖例

Tips:每個(gè)plt繪圖函數(shù)(如plt.plot()、plt.scatter()等)都有一個(gè)可選的label參數(shù)來(lái)命名圖形的元素。plt.legend()函數(shù)的作用是呈現(xiàn)圖例,圖例是根據(jù)標(biāo)簽自動(dòng)生成的。
plt.legend()函數(shù)包含可選參數(shù)來(lái)控制圖例的呈現(xiàn):

參數(shù) 說(shuō)明與可選值
loc 用于控制圖例的位置,默認(rèn)值為"best",將以適合的方式自動(dòng)放置圖例,其他可選值包括"upper left"、“l(fā)ower left”、“l(fā)ower right”、“right”、“center left”、“center right”、“l(fā)ower center”、“upper center"和"center”
shadow 可選值包括True和False,用于設(shè)置是否使用陰影效果呈現(xiàn)圖例
fancybox 可選值包括True和False,用于是否使用圓角框呈現(xiàn)圖例
title 用于為圖例設(shè)置標(biāo)題
ncol 強(qiáng)制設(shè)置圖例的列數(shù)

九、使用LaTex風(fēng)格的符號(hào)

我們已經(jīng)學(xué)習(xí)了為圖形添加多種注釋的方法。然而,在實(shí)踐中,我們通常需要使用數(shù)學(xué)符號(hào),因此,我們需要使用LaTex語(yǔ)法來(lái)添加數(shù)字符號(hào)。
要使用LaTex風(fēng)格的符號(hào),首先需要在計(jì)算機(jī)上安裝可用的LaTeX配置,以便Matplotlib可以解釋LaTeX語(yǔ)法來(lái)呈現(xiàn)數(shù)學(xué)文本。有關(guān)于安裝LaTeX的方法,不在本文的主題主題,大家可以根據(jù)自己的操作系統(tǒng)檢索安裝方法.

十、LaTex簡(jiǎn)介

LaTex是學(xué)術(shù)界廣泛使用的一種文獻(xiàn)排版系統(tǒng)。與Microsoft Word等文檔編輯器不同,LaTeX用戶在編輯文檔時(shí)無(wú)法看到其最終顯示效果。文檔被描述為純文本文檔中存儲(chǔ)的文本及命令。最終,LaTeX將解釋文檔以進(jìn)行呈現(xiàn)。在科學(xué)和工程界,LaTeX的公式語(yǔ)言通常用于在電子郵件和論壇中編寫數(shù)學(xué)文本。

十一、使用LaTex符號(hào)示例

使用LaTex風(fēng)格的符號(hào)時(shí),函數(shù)接受的字符串參數(shù)值以“$”字符開頭和結(jié)尾,這是向Matplotlib發(fā)出信號(hào),以將文本解釋并呈現(xiàn)為L(zhǎng)aTeX樣式的數(shù)學(xué)文本。字符串的內(nèi)容就是數(shù)學(xué)文本的標(biāo)準(zhǔn)語(yǔ)言,關(guān)于Matplotlib中LaTeX樣式的數(shù)學(xué)文本的介紹,可以參考Matplotlib官網(wǎng)。

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-4, 4, 10005)
y = 3 / 5 * (x + 4.2) * (x + 4.) * (x - 2.5)
plt.title('$f(x)=\\frac{3}{5}(x+4.4)(x+4)(x-2.5)$')
plt.plot(x, y, c = 'k')
plt.show()

使用LaTex符號(hào)示例

Tips:這種LaTex風(fēng)格的符號(hào)不限于標(biāo)題,它可以用于任何其它注釋。LaTeX語(yǔ)言在很大程度上依賴于轉(zhuǎn)義字符\,但此符號(hào)恰好也是Python的字符串轉(zhuǎn)義字符。因此,如果要在一個(gè)LaTeX文本中使用\作為轉(zhuǎn)移字符,需要在Python字符串中使用兩個(gè)\。為了避免漏掉轉(zhuǎn)義字符,可以在字符串前面加上r,這樣就不需要任何轉(zhuǎn)義字符了,即:"$f(x)=\\frac{1}{4}(x+4)(x+1)(x-2)$"等價(jià)于r'$f(x)=\frac{1}{4}(x+4)(x+1)(x-2)$'。

十二、使用中文字符

中文是使用Matplotlib的一個(gè)痛點(diǎn),但是在實(shí)際應(yīng)用中,又不可避免的會(huì)使用到中文用于統(tǒng)計(jì)圖注釋的顯示,如果不進(jìn)行配置,會(huì)將中文字符顯示為亂碼。
使用中文字符作為注釋有多種方式,這里本著簡(jiǎn)單就是最優(yōu)的理念,使用plt.rcParams['font.sans-serif']進(jìn)行設(shè)置:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 6, 1024)
data = np.random.standard_normal((150, 2))
y_1 = np.sin(x)
y_2 = np.cos(x)
plt.xlabel('x軸')
plt.ylabel('y軸')
plt.title('中文字符使用示例')
plt.plot(x, y_1, c = 'm', lw = 3., label = '正弦函數(shù)')
plt.plot(x, y_2, c = 'c', lw = 3., ls = '--', label = '余弦函數(shù)')
plt.scatter(data[:,0],data[:,1],c='y', label = '隨機(jī)點(diǎn)')
plt.rcParams['font.sans-serif'] = ['SimSun']
plt.legend()
plt.show()

使用中文字符

Tips:使用plt.rcParams['font.sans-serif']設(shè)定支持中文字符的字體,使用中文字符的用法范圍與LaTex風(fēng)格的符號(hào)一樣,它可以用于所有注釋,另外需要確保系統(tǒng)支持所設(shè)定的中文字符字體。

系列鏈接

學(xué)會(huì)Python-Matplotlib可視化,快速完成數(shù)據(jù)分析(1)

一文詳解常見統(tǒng)計(jì)圖的繪制學(xué)會(huì)Python-Matplotlib可視化,快速完成數(shù)據(jù)分析(2)

到此這篇關(guān)于Matplotlib可視化之添加讓統(tǒng)計(jì)圖變得簡(jiǎn)單易懂的注釋的文章就介紹到這了,更多相關(guān)Matplotlib可視化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python面向?qū)ο蟪绦蛟O(shè)計(jì)OOP入門教程【類,實(shí)例,繼承,重載等】

    Python面向?qū)ο蟪绦蛟O(shè)計(jì)OOP入門教程【類,實(shí)例,繼承,重載等】

    這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計(jì)OOP入門教程,較為詳細(xì)的分析了Python面向?qū)ο箢?實(shí)例,繼承,重載等相關(guān)概念與使用技巧,需要的朋友可以參考下
    2019-01-01
  • 用Python爬取2022春節(jié)檔電影信息

    用Python爬取2022春節(jié)檔電影信息

    大家好,本篇文章主要講的是用Python爬取2022春節(jié)檔電影信息,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Django REST framework 分頁(yè)的實(shí)現(xiàn)代碼

    Django REST framework 分頁(yè)的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Django REST framework 分頁(yè)的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • python使用difflib實(shí)現(xiàn)自動(dòng)查重

    python使用difflib實(shí)現(xiàn)自動(dòng)查重

    Python中有許多現(xiàn)成的庫(kù)和工具,可以方便地實(shí)現(xiàn)自動(dòng)查重的功能,其中,difflib庫(kù)就是一個(gè)專門用于比較文件和字符串差異的庫(kù),下面我們就來(lái)看看如何利用difflib實(shí)現(xiàn)自動(dòng)查重吧
    2023-11-11
  • Python連接Mssql基礎(chǔ)教程之Python庫(kù)pymssql

    Python連接Mssql基礎(chǔ)教程之Python庫(kù)pymssql

    這篇文章主要給大家介紹了關(guān)于Python連接Mssql基礎(chǔ)教程之Python庫(kù)pymssql的相關(guān)資料,文中分別介紹了連接數(shù)據(jù)庫(kù)、游標(biāo)使用注意事項(xiàng)、游標(biāo)返回行為字典變量、使用with語(yǔ)句(上下文管理器)以及調(diào)用存儲(chǔ)過(guò)程等的實(shí)現(xiàn),需要的朋友可以參考下
    2018-09-09
  • Python %r和%s區(qū)別代碼實(shí)例解析

    Python %r和%s區(qū)別代碼實(shí)例解析

    這篇文章主要介紹了Python %r和%s區(qū)別代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 詳細(xì)介紹Python中的偏函數(shù)

    詳細(xì)介紹Python中的偏函數(shù)

    這篇文章主要介紹了Python中的偏函數(shù),示例代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • Keras在訓(xùn)練期間可視化訓(xùn)練誤差和測(cè)試誤差實(shí)例

    Keras在訓(xùn)練期間可視化訓(xùn)練誤差和測(cè)試誤差實(shí)例

    這篇文章主要介紹了Keras在訓(xùn)練期間可視化訓(xùn)練誤差和測(cè)試誤差實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • python logging模塊的使用總結(jié)

    python logging模塊的使用總結(jié)

    這篇文章主要介紹了python logging模塊使用總結(jié)以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。,需要的朋友可以參考下
    2019-07-07
  • python中split(),?os.path.split()和os.path.splitext()的用法

    python中split(),?os.path.split()和os.path.splitext()的用法

    本文主要介紹了python中split(),?os.path.split()和os.path.splitext()的用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02

最新評(píng)論

鹤庆县| 肥城市| 客服| 勐海县| 三门县| 通城县| 丹江口市| 新郑市| 绥江县| 友谊县| 南江县| 绵阳市| 平远县| 赫章县| 来安县| 广元市| 台北市| 宝清县| 奉化市| 北川| 元朗区| 柘荣县| 波密县| 崇阳县| 吉安市| 上栗县| 旅游| 板桥市| 驻马店市| 新沂市| 诸城市| 南部县| 新丰县| 迭部县| 常德市| 新巴尔虎右旗| 鄂托克前旗| 中西区| 泗水县| 富平县| 汝阳县|