<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
用於在繪圖過程中,在影象上指定座標的位置新增文字。需要用到的是plt.text()方法。
其主要的引數有三個:
plt.text(x, y, s)
其中x,y表示傳入點的x和y軸座標。s表示字串。
需要注意的是,這裡的座標,如果設定有xticks、yticks標籤,則指的不是標籤,而是繪圖時x、軸的原始值。
因為引數過多,不再一一解釋,根據程式碼學習其用法。
ha='center’表示垂直對齊方式居中,fontsize=30表示字型大小為30,rotation=-25表示旋轉的角度為-25度。c設定顏色,alpha設定透明度。
va表示水平對齊方式。
下邊的程式碼在影象中新增了兩段文字,一段是“股市有風險,投資需謹慎”的斜體水印,透明度為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, '%.1f'%b, ha='center', va='bottom', fontsize=9) plt.show()
在上例程式碼的基礎之上,新增註釋。註釋即對影象中某一位置的解釋,可以用箭頭來指向。
新增註釋使用的是plt.annotate()方法
其語法中的常用引數如下
plt.annotate(str,xy,xytext,xycoords,arrowcoords)
其中str即註釋要使用的字串,即註釋文字
xy指被註釋的座標點
xytext指註釋文字要寫在的位置
xycoords是被註釋的點的座標系屬性,即以什麼樣的方式描述該點的座標。設定值預設為"data",即用(x,y)座標來描述。其他可以選擇的設定值如下,其中figure指的是整個畫布作為一個參考系。而axes則表示僅對於其中的一個axes物件區域。
設定值 | 描述 |
---|---|
data | 預設值,表示被註釋點的(x,y)座標 |
figure points | 以繪圖區的左下角為座標原點,單位是點數 |
figure pixels | 以繪圖區的左下角為座標原點,單位是畫素數 |
figure fraction | 以繪圖區的左下角為座標原點,單位是百分比 |
axes points | 以繪圖區的左下角為座標原點,單位是點數 |
axes pixels | 以繪圖區的左下角為座標原點,單位是畫素數 |
axes fraction | 以繪圖區的左下角為座標原點,單位是百分比 |
polar | 不使用本地資料座標系,使用極座標描述 |
arrowprops是一個字典,用來設定箭頭的屬性。寫在這個字典之外的引數都表示的是註釋文字的屬性。
字典內可以設定的值有
設定值 | 描述 |
---|---|
width | 箭頭的寬度(非頭部) |
headwidth | 箭頭頭部的寬度 |
headlength | 箭頭頭部的長度 |
facecolor | 箭頭的顏色 |
shrink | 箭頭兩端收縮的百分比(佔總長) |
? | 任何matplotlib.patches.FancyArrowPacth中的關鍵字 |
關於這些引數的進一步解釋:其中箭頭的總長度先是通過被註釋點位置座標 與 註釋文字位置座標 所決定的,可以通過調節引數arrowprops中的shrink鍵來進一步調節箭頭的長度,shrink表示將箭頭縮短的長度佔總長度(被註釋點位置座標 與 註釋文字位置座標 決定的長度)的百分比。當不設定shrink時,shrink預設為0,即不縮短。當shrink很大,接近1時,其效果等同於不縮短。
以標出圖中的最低價的點為例。在目標位置新增一個紅色的箭頭,及“最低價”三個字。
其他更多引數,如關於設定註釋文字的字型的,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, '%.1f'%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()
下邊換一種效果呈現,將提示語“股市有風險,入市需謹慎”字型調大到50,不透明。新增的註釋箭頭寬度為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 Matplotlib影象新增標籤內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45