电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:74日期:2022-06-17 08:54:27
目錄一、前言二、添加標(biāo)題三、為坐標(biāo)軸添加標(biāo)簽四、添加文本說明五、文本的對齊方式六、文本邊界框七、添加箭頭八、添加圖例九、使用LaTex風(fēng)格的符號十、LaTex簡介十一、使用LaTex符號示例十二、使用中文字符系列鏈接一、前言

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

二、添加標(biāo)題

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

import numpy as npimport matplotlib.pyplot as pltx = 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()

Matplotlib可視化之添加讓統(tǒng)計圖變得簡單易懂的注釋Tips:

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

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

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

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

Matplotlib可視化之添加讓統(tǒng)計圖變得簡單易懂的注釋Tips:

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

四、添加文本說明

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

import numpy as npimport matplotlib.pyplot as pltx = np.linspace(0, 8, 1000)y = 2.0 * x + 0.5 * 5 * x ** 2plt.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()

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

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

五、文本的對齊方式

文本外圍包含隱式文本框(下文會介紹文本框的顯示方法),此框用于將文本與傳遞給plt.text()的坐標(biāo)進行相對對齊。使用verticalalignment和horizontalalignment參數(shù)(它們分別可以簡寫為va和ha)控制對齊的方式。垂直對齊選項如下所示:

參數(shù)值 說明 center 參數(shù)坐標(biāo)相對于文本框的中心 top 參數(shù)坐標(biāo)相對于文本框的上側(cè) bottom 參數(shù)坐標(biāo)相對于文本框的底部 baseline 參數(shù)坐標(biāo)相對于文本的基線

import numpy as npimport matplotlib.pyplot as pltx = np.linspace(0, 8, 1000)y = 2.0 * x + 0.5 * 5 * x ** 2x_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()

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

水平對齊選項如下所示:

參數(shù)值 說明 center 參數(shù)坐標(biāo)相對于文本框的中心 left 參數(shù)坐標(biāo)相對于文本框的左側(cè) right 參數(shù)坐標(biāo)相對于文本框的右側(cè)

import numpy as npimport matplotlib.pyplot as pltx = np.linspace(0, 8, 1000)y = 2.0 * x + 0.5 * 5 * x ** 2y_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()

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

六、文本邊界框

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

import numpy as npimport matplotlib.pyplot as pltx = np.linspace(0, 8, 1000)y = 2.0 * x + 0.5 * 5 * x ** 2box = { ’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()

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

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

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

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

import numpy as npimport matplotlib.pyplot as pltx = np.linspace(0, 8, 1000)y = 2.0 * x + 0.5 * 5 * x ** 2plt.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()

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

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

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

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

八、添加圖例

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

import numpy as npimport matplotlib.pyplot as pltx = 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()

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

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

參數(shù) 說明與可選值 loc 用于控制圖例的位置,默認(rèn)值為'best',將以適合的方式自動放置圖例,其他可選值包括'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 強制設(shè)置圖例的列數(shù) 九、使用LaTex風(fēng)格的符號

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

十、LaTex簡介

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

十一、使用LaTex符號示例

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

import numpy as npimport matplotlib.pyplot as pltx = 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()

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

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

十二、使用中文字符

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

import numpy as npimport matplotlib.pyplot as pltx = 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 = ’隨機點’)plt.rcParams[’font.sans-serif’] = [’SimSun’]plt.legend()plt.show()

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

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

系列鏈接

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

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

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

標(biāo)簽: Matplotlib
相關(guān)文章:
主站蜘蛛池模板: 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 无硅导热垫片-碳纤维导热垫片-导热相变材料厂家-东莞市盛元新材料科技有限公司 | 番茄畅听邀请码怎么输入 - Dianw8.com | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 蚂蚁分类信息系统 - PHP同城分类信息系统 - MayiCMS | 高防护蠕动泵-多通道灌装系统-高防护蠕动泵-www.bjhuiyufluid.com慧宇伟业(北京)流体设备有限公司 | 气动绞车,山东气动绞车,气动绞车厂家-烟台博海石油机械有限公司 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 胀套-锁紧盘-风电锁紧盘-蛇形联轴器「厂家」-瑞安市宝德隆机械配件有限公司 | 潍坊大集网-潍坊信息港-潍坊信息网 | 天津拓展_天津团建_天津趣味运动会_天津活动策划公司-天津华天拓展培训中心 | 筛分机|振动筛分机|气流筛分机|筛分机厂家-新乡市大汉振动机械有限公司 | 搪瓷搅拌器,搪玻璃搅拌器,搪玻璃冷凝器_厂家-淄博越宏化工设备 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 送料机_高速冲床送料机_NC伺服滚轮送料机厂家-东莞市久谐自动化设备有限公司 | 针焰试验仪,灼热丝试验仪,漏电起痕试验仪,水平垂直燃烧试验仪 - 苏州亚诺天下仪器有限公司 | 工控机-工业平板电脑-研华工控机-研越无风扇嵌入式box工控机 | 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 电动葫芦|环链电动葫芦-北京凌鹰名优起重葫芦 | 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | 2025黄道吉日查询、吉时查询、老黄历查询平台- 黄道吉日查询网 | 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 抓斗式清污机|螺杆式|卷扬式启闭机|底轴驱动钢坝|污水处理闸门-方源水利机械 | 冷凝锅炉_燃气锅炉_工业燃气锅炉改造厂家-北京科诺锅炉 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 压砖机_电动螺旋压力机_粉末成型压力机_郑州华隆机械tel_0371-60121717 | 馋嘴餐饮网_餐饮加盟店火爆好项目_餐饮连锁品牌加盟指南创业平台 | 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 | 西安微信朋友圈广告投放_微信朋友圈推广_西安度娘网络科技有限公司 | 河南空气能热水器-洛阳空气能采暖-洛阳太阳能热水工程-洛阳润达高科空气能商行 | TPM咨询,精益生产管理,5S,6S现场管理培训_华谋咨询公司 | 高低温万能试验机_拉力试验机_拉伸试验机-馥勒仪器科技(上海)有限公司 | 谈股票-今日股票行情走势分析-牛股推荐排行榜 | 利浦顿蒸汽发生器厂家-电蒸汽发生器/燃气蒸汽发生器_湖北利浦顿热能科技有限公司官网 | 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 执业药师报名条件,考试时间,考试真题,报名入口—首页 | 十二星座查询(性格特点分析、星座运势解读) - 玄米星座网 | HV全空气系统_杭州暖通公司—杭州斯培尔冷暖设备有限公司 | 继电器模组-IO端子台-plc连接线-省配线模组厂家-世麦德 |