python用matplotlib繪制二維坐標(biāo)軸,設(shè)置箭頭指向,文本內(nèi)容方式
使用matplotlib繪制二維坐標(biāo)軸,設(shè)置箭頭指向,文本內(nèi)容
我們在使用matplotlib繪制圖像時,默認(rèn)的坐標(biāo)軸是在左下角,這樣對于一些曲線的顯示就不太清楚。
如下:
import matplotlib.pyplot as plt import numpy as np x = np.linspace(-10, 10, 100) y1 = 2 * x y2 = x * x plt.figure() plt.xlabel('X axis') plt.ylabel('Y axis') plt.plot(x, y1, linestyle='--') plt.plot(x, y2) plt.show()
根據(jù)X和Y繪制兩條曲線,直接繪制的話,坐標(biāo)軸就在左下角。
對于曲線的展示不清楚,比如我們想把(0,0)點(diǎn)作為坐標(biāo)軸原點(diǎn)。
可以參考下面的方法。
1.更改坐標(biāo)軸的位置
可以看到,默認(rèn)繪圖是四個邊把圖像框起來了。spine() 這個單詞的意思是脊梁,就是包圍圖表的線條。
如下:
分為 top,bottom,left,right 上下左右四條邊。我們的方法就是隱藏右邊和上邊,然后移動左邊和下邊,移動到想要的位置。
1.首先要獲取整張圖像的坐標(biāo),方法是
ax = plt.gca() # 獲取整張圖像的坐標(biāo)的對象
2.隱藏起來兩條邊,右邊和上邊
# 將右邊,上邊的兩條邊顏色設(shè)置為空 其實(shí)就相當(dāng)于抹掉這兩條邊 ax.spines[‘right'].set_color(‘none') ax.spines[‘top'].set_color(‘none')
3.移動左邊和下邊,指定為為x軸和y軸
ax.xaxis.set_ticks_position('bottom') ax.yaxis.set_ticks_position('left')
4.設(shè)置坐標(biāo)軸交點(diǎn)
# 設(shè)置(0,0)為兩坐標(biāo)軸的交點(diǎn) ax.spines[‘bottom'].set_position((‘data', 0)) ax.spines[‘left'].set_position((‘data', 0))
移動坐標(biāo)軸后,繪制圖像結(jié)果如下:
完整代碼:
import matplotlib.pyplot as plt import numpy as np x = np.linspace(-10, 10, 100) y1 = 2 * x y2 = x * x plt.figure() plt.xlabel('X axis') plt.ylabel('Y axis') # 設(shè)置坐標(biāo)軸的文字標(biāo)簽 ax = plt.gca() # get current axis 獲得坐標(biāo)軸對象 ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') # 將右邊 上邊的兩條邊顏色設(shè)置為空 其實(shí)就相當(dāng)于抹掉這兩條邊 ax.xaxis.set_ticks_position('bottom') ax.yaxis.set_ticks_position('left') # 指定下邊的邊作為 x 軸 指定左邊的邊為 y 軸 ax.spines['bottom'].set_position(('data', 0)) # 指定 data 設(shè)置的bottom(也就是指定的x軸)綁定到y(tǒng)軸的0這個點(diǎn)上 ax.spines['left'].set_position(('data', 0)) plt.plot(x, y1, linestyle='--') plt.plot(x, y2) plt.show()
2. 設(shè)置箭頭內(nèi)容指向曲線
在繪制曲線時,我們想要用在圖像箭頭標(biāo)注一下表達(dá)式,調(diào)用的函數(shù)如下:
annotate(s='str', xy=(x,y), xycoords='data', xytext=(l1,l2), textcoords, arrowprops) # s為標(biāo)注內(nèi)容 # xy為基準(zhǔn)點(diǎn) # xycoords='data' xy的坐標(biāo)是基于data的 # xytext 為注釋文字的坐標(biāo)位置 # textcoords='offset point'代表以這個點(diǎn)為基準(zhǔn) # arrowprops描述箭頭,線的弧度等信息,箭頭參數(shù),參數(shù)類型為字典dict
# 添加標(biāo)注 x0 = 1 y0 = 2 * x0 + 1 plt.scatter(x0, y0, s=50, color='b') plt.plot([x0, x0], [y0, y0], 'k--', lw=2.5) plt.annotate(r'$2x+1=%s$' % y0, xy=(x0, y0), xycoords='data', xytext=(+30, -30), textcoords='offset points', fontsize=16, arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=.2'))
繪制結(jié)果如下:
完整代碼:
import matplotlib.pyplot as plt import numpy as np x = np.linspace(-3, 3, 50) y = 2*x+1 plt.figure(num=1, figsize=(8, 5)) plt.plot(x, y) ax = plt.gca() ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') ax.yaxis.set_ticks_position('left') ax.spines['bottom'].set_position(('data', 0)) ax.spines['left'].set_position(('data', 0)) # 添加標(biāo)注 x0 = 1 y0 = 2 * x0 + 1 plt.scatter(x0, y0, s=50, color='b') plt.plot([x0, x0], [y0, y0], 'k--', lw=2.5) plt.annotate(r'$2x+1=%s$' % y0, xy=(x0, y0), xycoords='data', xytext=(+30, -30), textcoords='offset points', fontsize=16, arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=.2')) plt.show()
3. 設(shè)置文本內(nèi)容
有時候想在圖像上設(shè)置一行文字的內(nèi)容,這時候調(diào)用的函數(shù)如下:
plt.text(x, y, s) # x,y為文字位置 # s為文字內(nèi)容
plt.text(-3.7, 3, r'$This\ is\ the\ some\ text.\ \mu\ \sigma_i\ \alpha_t$', fontdict={'size': 16, 'color': 'r'})
繪制結(jié)果如下:
總結(jié)
以上即為python使用matplotlib繪制二維坐標(biāo)軸,設(shè)置箭頭指向,文本內(nèi)容的知識。
僅為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Django使用paginator插件實(shí)現(xiàn)翻頁功能的實(shí)例
今天小編就為大家分享一篇關(guān)于Django使用paginator插件實(shí)現(xiàn)翻頁功能的實(shí)例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10Python中基本的日期時間處理的學(xué)習(xí)教程
這篇文章主要介紹了Python中基本的日期時間處理的學(xué)習(xí)教程,日期時間相關(guān)模塊的使用是Python入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-10-10Python實(shí)現(xiàn)獲取當(dāng)前日期的所屬信息
在Python中,處理日期和時間是一個常見的任務(wù),它涉及到許多方面,例如獲取日期的年、月、日、星期幾等等,本文將詳細(xì)介紹如何使用Python來獲取當(dāng)前日期的各種相關(guān)信息,需要的可以了解下2024-01-01pycharm創(chuàng)建scrapy項(xiàng)目教程及遇到的坑解析
這篇文章主要介紹了pycharm創(chuàng)建scrapy項(xiàng)目教程及遇到的坑解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08Python使用multiprocessing如何實(shí)現(xiàn)多進(jìn)程
這篇文章主要介紹了Python使用multiprocessing如何實(shí)現(xiàn)多進(jìn)程問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02Pytorch中實(shí)現(xiàn)只導(dǎo)入部分模型參數(shù)的方式
今天小編就為大家分享一篇Pytorch中實(shí)現(xiàn)只導(dǎo)入部分模型參數(shù)的方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01詳解numpy矩陣的創(chuàng)建與數(shù)據(jù)類型
這篇文章主要介紹了詳解numpy矩陣的創(chuàng)建與數(shù)據(jù)類型,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10