Python繪圖并標(biāo)記出指定點(diǎn)(最大值點(diǎn))方法實(shí)例
用Python代碼,繪制圖形并在圖上最大值點(diǎn)處用箭頭標(biāo)記出數(shù)值。
import numpy as np
import matplotlib.pyplot as plt
# 生成數(shù)據(jù),這里生成一個正弦曲線
x = np.linspace(-5, 5, 100) # 在[-5,5]之間生成100個點(diǎn)作為x坐標(biāo)
y = np.sin(x) # 計(jì)算每個x點(diǎn)上的正弦值
# 找到最大值點(diǎn),這里使用np.argmax函數(shù)查找y數(shù)組中的最大值的索引
max_idx = np.argmax(y)
max_x, max_y = x[max_idx], y[max_idx]
# 繪制圖形
plt.plot(x, y) # 繪制正弦曲線
plt.scatter(max_x, max_y, color='red', s=50) # 在最大值點(diǎn)上繪制一個紅色的圓點(diǎn)
plt.annotate(f'max: ({max_x:.2f}, {max_y:.2f})', xy=(max_x, max_y), xytext=(max_x-1, max_y+0.5),
arrowprops=dict(facecolor='red', shrink=0.05)) # 添加注釋,使用紅色箭頭連接注釋和最大值點(diǎn)
plt.show() # 顯示圖形這里我們生成了一個正弦曲線,并使用 plt.plot(x, y) 繪制了這個曲線。接著,我們使用 np.argmax(y) 查找了y數(shù)組中最大值的索引,也就是正弦曲線的最高點(diǎn)。然后,我們使用 plt.scatter(max_x, max_y, color='red', s=50) 在最大值點(diǎn)上繪制了一個紅色的圓點(diǎn),使用 plt.annotate 添加了一個注釋,指出了最大值點(diǎn)的坐標(biāo),箭頭顏色也設(shè)置成紅色,注釋與最大值點(diǎn)連接。最后,我們使用 plt.show() 顯示圖形,如下圖:

plt.annotate 函數(shù)用于添加文本注釋,其參數(shù)如下:
- f'max: ({max_x:.2f}, {max_y:.2f})':注釋的文本內(nèi)容,這里使用了 f-string 格式化字符串,并使用 .2f 指定了最大值點(diǎn)的坐標(biāo)格式,保留小數(shù)點(diǎn)后兩位。
- xy=(max_x, max_y):被注釋的點(diǎn)的坐標(biāo),也就是最大值點(diǎn)的坐標(biāo)。
- xytext=(max_x-1, max_y+0.5):注釋文本的坐標(biāo),這里是相對于 xy 坐標(biāo)的偏移量,將注釋文本放置在最大值點(diǎn)左上方。
- arrowprops=dict(facecolor='red', shrink=0.05):指定箭頭的屬性,這里使用了一個字典來指定箭頭的顏色和大小。facecolor 指定箭頭顏色為紅色,shrink 指定箭頭大小為當(dāng)前注釋框大小的5%。
通過這些參數(shù),我們可以調(diào)整注釋框的位置、大小、顏色等屬性,以達(dá)到我們想要的效果。
補(bǔ)充:matplotlib.pyplot 標(biāo)記出曲線上最大點(diǎn)和最小點(diǎn)的位置
廢話不多說,直接上代碼。
要求:正確安裝了matplotlib庫
import matplotlib.pyplot as plt
import numpy as np
def demo_test():
a=np.array([0.15,0.16,0.14,0.17,0.12,0.16,0.1,0.08,0.05,0.07,0.06]);
max_indx=np.argmax(a)#max value index
min_indx=np.argmin(a)#min value index
plt.plot(a,'r-o')
plt.plot(max_indx,a[max_indx],'ks')
show_max='['+str(max_indx)+' '+str(a[max_indx])+']'
plt.annotate(show_max,xytext=(max_indx,a[max_indx]),xy=(max_indx,a[max_indx]))
plt.plot(min_indx,a[min_indx],'gs')
plt.show()
if __name__=="__main__":
demo_test();
效果圖如下:

總結(jié)
到此這篇關(guān)于Python繪圖并標(biāo)記出指定點(diǎn)(最大值點(diǎn))的文章就介紹到這了,更多相關(guān)Python繪圖并標(biāo)記指定點(diǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
numpy 計(jì)算兩個數(shù)組重復(fù)程度的方法
今天小編就為大家分享一篇numpy 計(jì)算兩個數(shù)組重復(fù)程度的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11
python3.5實(shí)現(xiàn)socket通訊示例(TCP)
本篇文章主要介紹了python3.5實(shí)現(xiàn)socket通訊示例(TCP),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
淺談django 模型類使用save()方法的好處與注意事項(xiàng)
這篇文章主要介紹了淺談django 模型類使用save()方法的好處與注意事項(xiàng),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Python開發(fā)企業(yè)微信機(jī)器人每天定時發(fā)消息實(shí)例
這篇文章主要介紹了Python開發(fā)企業(yè)微信機(jī)器人每天定時發(fā)消息實(shí)例,需要的朋友可以參考下2020-03-03
詳解django的serializer序列化model幾種方法
序列化是將對象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)母袷降倪^程。這篇文章主要介紹了詳解django的serializer序列化model幾種方法。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10
Python表格處理模塊xlrd在Anaconda中的安裝方法
本文介紹在Anaconda環(huán)境下,安裝Python讀取.xls格式表格文件的庫xlrd的方法,xlrd是一個用于讀取Excel文件的Python庫,本文介紹了xlrd庫的一些主要特點(diǎn)和功能,感興趣的朋友一起看看吧2024-04-04

