Python中Matplotlib圖像添加標(biāo)簽的方法實(shí)現(xiàn)
一、添加文本標(biāo)簽 plt.text()
用于在繪圖過(guò)程中,在圖像上指定坐標(biāo)的位置添加文本。需要用到的是plt.text()方法。
其主要的參數(shù)有三個(gè):
plt.text(x, y, s)
其中x、y表示傳入點(diǎn)的x和y軸坐標(biāo)。s表示字符串。
需要注意的是,這里的坐標(biāo),如果設(shè)定有xticks、yticks標(biāo)簽,則指的不是標(biāo)簽,而是繪圖時(shí)x、軸的原始值。
因?yàn)閰?shù)過(guò)多,不再一一解釋,根據(jù)代碼學(xué)習(xí)其用法。
ha = 'center’
表示垂直對(duì)齊方式居中,fontsize = 30
表示字體大小為30,rotation = -25
表示旋轉(zhuǎn)的角度為-25度。c
設(shè)定顏色,alpha
設(shè)定透明度。va
表示水平對(duì)齊方式。
1. 示例
代碼在圖像中添加了兩段文本,一段是“旅途中的寬~”的斜體水印,透明度為0.4。
另一段是在折線的每個(gè)折點(diǎn)附近標(biāo)出當(dāng)天收盤(pán)價(jià)。
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False x = range(9) y = [5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31] c = 0.5 * (min(x) + max(x)) d = min(y) + 0.3 * (max(y) - min(y)) # 水印效果 plt.text(c, d, '旅途中的寬~', ha = 'center', fontsize = 30, rotation = -25, c = 'gray', alpha = 0.4) plt.plot(x, y, label = '股票A收盤(pán)價(jià)', c = 'r', ls = '-.', marker = 'D', lw = 2) plt.xticks(x, [ '2022-03-27', '2022-03-28', '2022-03-29', '2022-03-30', '2022-03-31', '2022-04-01', '2022-04-04', '2022-04-05', '2022-04-06'], rotation = 45) plt.title('某股票收盤(pán)價(jià)時(shí)序圖') plt.xlabel('日期') plt.ylabel('價(jià)格') plt.grid(True) plt.legend() # 標(biāo)出每天的收盤(pán)價(jià) for a, b in zip(x, y): plt.text(a, b + 0.01, '%.2f' % b, ha = 'center', va = 'bottom', fontsize = 14) plt.show()
二、添加注釋 plt.annotate()
在上例代碼的基礎(chǔ)之上,添加注釋。注釋即對(duì)圖像中某一位置的解釋,可以用箭頭來(lái)指向。
添加注釋使用的是plt.annotate()
方法
其語(yǔ)法中的常用參數(shù)如下
plt.annotate(str,xy,xytext,xycoords,arrowcoords)
其中str
即注釋要使用的字符串,即注釋文本;xy
指被注釋的坐標(biāo)點(diǎn);xytext
指注釋文本要寫(xiě)在的位置;xycoords
是被注釋的點(diǎn)的坐標(biāo)系屬性,即以什么樣的方式描述該點(diǎn)的坐標(biāo)。設(shè)置值默為"data",即用(x,y)坐標(biāo)來(lái)描述。其他可以選擇的設(shè)置值如下,其中figure指的是整個(gè)畫(huà)布作為一個(gè)參考系。而axes則表示僅對(duì)于其中的一個(gè)axes對(duì)象區(qū)域。
arrowprops
是一個(gè)字典,用來(lái)設(shè)置箭頭的屬性。寫(xiě)在這個(gè)字典之外的參數(shù)都表示的是注釋文本的屬性。
字典內(nèi)可以設(shè)置的值有:
關(guān)于這些參數(shù)的進(jìn)一步解釋:其中箭頭的總長(zhǎng)度先是通過(guò)被注釋點(diǎn)位置坐標(biāo) 與 注釋文本位置坐標(biāo) 所決定的,可以通過(guò)調(diào)節(jié)參數(shù)arrowprops中的shrink鍵來(lái)進(jìn)一步調(diào)節(jié)箭頭的長(zhǎng)度,shrink表示將箭頭縮短的長(zhǎng)度占總長(zhǎng)度(被注釋點(diǎn)位置坐標(biāo) 與 注釋文本位置坐標(biāo) 決定的長(zhǎng)度)的百分比。當(dāng)不設(shè)定shrink時(shí),shrink默認(rèn)為0,即不縮短。當(dāng)shrink很大,接近1時(shí),其效果等同于不縮短。
1. 示例
以標(biāo)出圖中的最低價(jià)的點(diǎn)為例。在目標(biāo)位置添加一個(gè)紅色的箭頭,及“最低價(jià)”三個(gè)字。
其他更多參數(shù),如關(guān)于設(shè)置注釋文本的字體的,c或color表示顏色,fontsize表示字體大小。更多屬性自行了解嘗試。
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False x = range(9) y = [5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31] c = 0.5 * (min(x) + max(x)) d = min(y) + 0.3 * (max(y) - min(y)) # 仿水印效果 plt.text(c, d, '旅途中的寬', ha = 'center', fontsize = 30, rotation = -25, c = 'gray', alpha = 0.4) plt.plot(x, y, label = '股票A收盤(pán)價(jià)', c = 'r', ls = '-.', marker = 'D', lw = 2) # plt.plot([5.09, 5.13, 5.16, 5.12, 5.09, 5.25, 5.16, 5.20, 5.25], label='股票B收盤(pán)價(jià)', c='g', ls=':', marker='H', lw=4) plt.xticks(x, [ '2022-03-27', '2022-03-28', '2022-03-29', '2022-03-30', '2022-03-31', '2022-04-01', '2022-04-04', '2022-04-05', '2022-04-06'], rotation = 45) plt.title('某股票收盤(pán)價(jià)時(shí)序圖') plt.xlabel('日期') plt.ylabel('價(jià)格') plt.grid(True) plt.legend() # 標(biāo)出每天的收盤(pán)價(jià) for a, b in zip(x, y): plt.text(a, b + 0.01, '%.3f'% b, ha = 'center', va = 'bottom', fontsize = 9) # 添加注釋 plt.annotate('最低價(jià)', (x[y.index(min(y))], min(y)), (x[y.index(min(y))] + 0.5, min(y)), xycoords = 'data', arrowprops = dict(facecolor = 'r', shrink = 0.1), c = 'r',fontsize = 15) plt.show()
下邊換一種效果呈現(xiàn),添加的注釋箭頭寬度為3,箭頭的頭部寬度為10,長(zhǎng)度為20,縮短0.05,且箭頭為綠色,注釋字體為紅色。代碼示例如下:
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False x = range(9) y = [5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31] c = 0.5 * (min(x) + max(x)) d = min(y) + 0.3 * (max(y)-min(y)) plt.plot(x, y, label = '股票A收盤(pán)價(jià)', c = 'k', ls = '-.', marker = 'D', lw = 2) plt.xticks(x, [ '2022-03-27', '2022-03-28', '2022-03-29', '2022-03-30', '2022-03-31', '2022-04-01', '2022-04-04', '2022-04-05', '2022-04-06'], rotation = 45) plt.title('某股票收盤(pán)價(jià)時(shí)序圖') plt.xlabel('日期') plt.ylabel('價(jià)格') plt.grid(True) plt.legend() # 標(biāo)出每天的收盤(pán)價(jià) for a, b in zip(x, y): plt.text(a, b+0.01, '%.1f'%b, ha='center', va='bottom', fontsize=9) plt.text(c, d, '旅途中的寬', ha = 'center', fontsize = 50, rotation = -25, c = 'r') plt.annotate('最低價(jià)', (x[y.index(min(y))], min(y)), (x[y.index(min(y))] + 2, min(y)), xycoords = 'data', arrowprops = dict(width = 3, headwidth = 10, headlength = 20, facecolor = 'g', shrink = 0.05), c = 'r',fontsize = 20) plt.show()
到此這篇關(guān)于Python中Matplotlib圖像添加標(biāo)簽的方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python Matplotlib圖像添加標(biāo)簽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 在OpenCV里實(shí)現(xiàn)仿射變換—坐標(biāo)變換效果
這篇文章主要介紹了Python 在OpenCV里實(shí)現(xiàn)仿射變換—坐標(biāo)變換效果,本文通過(guò)一個(gè)例子給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08Python?turtle.right與turtle.setheading的區(qū)別講述
這篇文章主要介紹了Python?turtle.right與turtle.setheading的區(qū)別,本文以turtle.right為例給大家詳細(xì)介紹,需要的朋友可以參考下2022-03-03Python itertools庫(kù)高效迭代藝術(shù)實(shí)例探索
Python 中的?itertools?庫(kù)為迭代器操作提供了豐富的工具集,使得處理迭代對(duì)象變得更加高效和靈活,本篇文章將深入討itertools庫(kù)的常用方法,通過(guò)詳實(shí)的示例代碼演示其在解決各種問(wèn)題中的應(yīng)用2024-01-01pytorch中的weight-initilzation用法
這篇文章主要介紹了pytorch中的weight-initilzation用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06Selenium(Python web測(cè)試工具)基本用法詳解
這篇文章主要介紹了Selenium(Python web測(cè)試工具)基本用法,結(jié)合實(shí)例形式分析了Selenium的基本安裝、簡(jiǎn)單使用方法及相關(guān)操作技巧,需要的朋友可以參考下2018-08-08