Python中Matplotlib圖像如何添加標簽
本文講解"Python中Matplotlib圖像怎么添加標簽",希望能夠解決相關問題。
一、添加文本標簽 plt.text()
用于在繪圖過程中,在圖像上指定坐標的位置添加文本。需要用到的是plt.text()方法。
其主要的參數(shù)有三個:
plt.text(x, y, s)
其中x、y表示傳入點的x和y軸坐標。s表示字符串。
需要注意的是,這里的坐標,如果設定有xticks、yticks標簽,則指的不是標簽,而是繪圖時x、軸的原始值。
因為參數(shù)過多,不再一一解釋,根據(jù)代碼學習其用法。
ha = 'center’表示垂直對齊方式居中,fontsize = 30表示字體大小為30,rotation = -25表示旋轉的角度為-25度。c 設定顏色,alpha設定透明度。va表示水平對齊方式。
1. 示例
代碼在圖像中添加了兩段文本,一段是“旅途中的寬~”的斜體水印,透明度為0.4。
另一段是在折線的每個折點附近標出當天收盤價。
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收盤價', 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('某股票收盤價時序圖') plt.xlabel('日期') plt.ylabel('價格') plt.grid(True) plt.legend() # 標出每天的收盤價 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()
在上例代碼的基礎之上,添加注釋。注釋即對圖像中某一位置的解釋,可以用箭頭來指向。
添加注釋使用的是plt.annotate()方法
其語法中的常用參數(shù)如下
plt.annotate(str,xy,xytext,xycoords,arrowcoords)
其中str即注釋要使用的字符串,即注釋文本;xy指被注釋的坐標點;xytext指注釋文本要寫在的位置;xycoords是被注釋的點的坐標系屬性,即以什么樣的方式描述該點的坐標。設置值默為"data",即用(x,y)坐標來描述。其他可以選擇的設置值如下,其中figure指的是整個畫布作為一個參考系。而axes則表示僅對于其中的一個axes對象區(qū)域。
arrowprops是一個字典,用來設置箭頭的屬性。寫在這個字典之外的參數(shù)都表示的是注釋文本的屬性。
字典內(nèi)可以設置的值有:
關于這些參數(shù)的進一步解釋:其中箭頭的總長度先是通過被注釋點位置坐標 與 注釋文本位置坐標 所決定的,可以通過調(diào)節(jié)參數(shù)arrowprops中的shrink鍵來進一步調(diào)節(jié)箭頭的長度,shrink表示將箭頭縮短的長度占總長度(被注釋點位置坐標 與 注釋文本位置坐標 決定的長度)的百分比。當不設定shrink時,shrink默認為0,即不縮短。當shrink很大,接近1時,其效果等同于不縮短。
1. 示例
以標出圖中的最低價的點為例。在目標位置添加一個紅色的箭頭,及“最低價”三個字。
其他更多參數(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收盤價', 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收盤價', 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('某股票收盤價時序圖') plt.xlabel('日期') plt.ylabel('價格') plt.grid(True) plt.legend() # 標出每天的收盤價 for a, b in zip(x, y): plt.text(a, b + 0.01, '%.3f'% b, ha = 'center', va = 'bottom', fontsize = 9) # 添加注釋 plt.annotate('最低價', (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,長度為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收盤價', 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('某股票收盤價時序圖') plt.xlabel('日期') plt.ylabel('價格') plt.grid(True) plt.legend() # 標出每天的收盤價 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('最低價', (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()
關于 "Python中Matplotlib圖像怎么添加標簽" 就介紹到此。希望多多支持碩編程。
- Python中find函數(shù)如何使用
- 在Python里面調(diào)用Golang代碼的方法
- Python異步怎么使用等待有時間限制協(xié)程
- python如何實現(xiàn)簡易的學生信息管理系統(tǒng)
- Python混合如何使用同步和異步函數(shù)
- 如何封裝Python時間處理庫創(chuàng)建自己的TimeUtil類
- python操作Excel神器openpyxl如何使用
- Python HTTP請求
- Python 自定義HTTP請求
- Python HTTP數(shù)據(jù)下載
- Python Socket程序
- Python 構建URL
- Python Telnet
- Python SFTP
- Python Web服務器
- Python列出目錄
- Python 并發(fā)與并行
- Python 調(diào)試線程應用程序
- Python 處理器通信
- Python 反應式編程