matplotlib極座標方法詳解

1、極座標

在平面內取一個定點O,叫極點,引一條射線Ox,叫作極軸,再選定一個長度單位和角度的正方向(一般取逆時針方向)。對於平面內任何一點M,用ρ表示線段OM的長度(有時也用r表示),θ表示從Ox到OM的角度,ρ叫作點M的極徑,θ叫作點M的極角,有序數對 (ρ,θ)就叫點M的極座標,這樣創建的座標系叫作極座標系。一般狀況下,M的極徑座標單位爲1(長度單位),極角座標單位爲rad(或°)
imagepython

2、matplotlib繪製極座標圖

1.建立極座標圖

matplotlib的pyplot子庫提供了繪製極座標圖的方法,在調用subplot()建立子圖時經過設置projection='polar',即可建立一個極座標子圖,而後調用plot()在極座標子圖中繪圖。
下面就建立一個極座標子圖和一個直角座標子圖進行對比。微信

import matplotlib.pyplot as plt
ax1 = plt.subplot(121, projection='polar')
ax2 = plt.subplot(122)
ax1.plot(theta,theta/6,'--',lw=2)
ax2.plot(theta,theta/6,'--',lw=2)
plt.show()

極座標系

2.極座標圖設置

dir()命令能夠獲得一個對象的全部方法屬性,經過比較ax1ax2的方法屬性即可知道極座標有哪些設置方法。3d

>>> print(sorted(set(dir(ax1))-set(dir(ax2))))
['InvertedPolarTransform', 'PolarAffine', 'PolarTransform', 'RadialLocator', 'ThetaFormatter', '_default_rlabel_position', '_default_theta_direction', '_default_theta_offset', '_direction', '_r_label_position', '_theta_label1_position', '_theta_label2_position', '_theta_offset', '_xaxis_text1_transform', '_xaxis_text2_transform', '_yaxis_text_transform', 'get_rlabel_position', 'get_rmax', 'get_rmin', 'get_theta_direction', 'get_theta_offset', 'resolution', 'set_rgrids', 'set_rlabel_position', 'set_rlim', 'set_rmax', 'set_rmin', 'set_rscale', 'set_rticks', 'set_theta_direction', 'set_theta_offset', 'set_theta_zero_location', 'set_thetagrids', 'transProjection', 'transProjectionAffine', 'transPureProjection']

2.1 極座標正方向

set_theta_direction方法用於設置極座標的正方向code

  • set_theta_direction的參數值爲1,'counterclockwise'或者是'anticlockwise'的時候,正方向爲逆時針;
  • set_theta_direction的參數值爲-1或者是'clockwise'的時候,正方向爲順時針;
  • 默認狀況下正方向爲逆時針
import matplotlib.pyplot as plt
import numpy as np
theta=np.arange(0,2*np.pi,0.02)
ax1= plt.subplot(121, projection='polar')
ax2= plt.subplot(122, projection='polar')
ax2.set_theta_direction(-1)
ax1.plot(theta,theta/6,'--',lw=2)
ax2.plot(theta,theta/6,'--',lw=2)
plt.show()

image

2.2 極座標0°位置

set_theta_zero_location方法用於設置極座標0°位置orm

  • 0°可設置在八個位置,分別爲N, NW, W, SW, S, SE, E, NE
  • set_theta_zero_location的參數值爲'N','NW','W','SW','S','SE','E','NE'時,0°分別對應的位置爲方位N, NW, W, SW, S, SE, E, NE;
  • 默認狀況下0°位於E方位
import matplotlib.pyplot as plt
import numpy as np
theta=np.arange(0,2*np.pi,0.02)
ax1= plt.subplot(121, projection='polar')
ax2= plt.subplot(122, projection='polar')
ax2.set_theta_zero_location('N')
ax1.plot(theta,theta/6,'--',lw=2)
ax2.plot(theta,theta/6,'--',lw=2)
plt.show()

image

2.3極座標角度網格線顯示

set_thetagrids方法用於設置極座標角度網格線顯示視頻

  • 參數爲所要顯示網格線的角度值列表
  • 默認顯示0°、45°、90°、135°、180°、225°、270°、315°的網格線
import matplotlib.pyplot as plt
import numpy as np
theta=np.arange(0,2*np.pi,0.02)
ax1= plt.subplot(121, projection='polar')
ax2= plt.subplot(122, projection='polar')
ax2.set_thetagrids(np.arange(0.0, 360.0, 30.0))
ax1.plot(theta,theta/6,'--',lw=2)
ax2.plot(theta,theta/6,'--',lw=2)
plt.show()

image

2.4極座標角度偏離

set_theta_offset方法用於設置角度偏離對象

  • 參數值爲弧度值數值
import matplotlib.pyplot as plt
import numpy as np
theta=np.arange(0,2*np.pi,0.02)
ax1= plt.subplot(121, projection='polar')
ax2= plt.subplot(122, projection='polar')
ax2.set_theta_offset(np.pi)
ax1.plot(theta,theta/6,'--',lw=2)
ax2.plot(theta,theta/6,'--',lw=2)
plt.show()

image

2.5極座標極徑網格線顯示

set_rgrids方法用於設置極徑網格線顯示blog

  • 參數值爲所要顯示網格線的極徑值列表,最小值不能小於等於0
import matplotlib.pyplot as plt
import numpy as np
theta=np.arange(0,2*np.pi,0.02)
ax1= plt.subplot(121, projection='polar')
ax2= plt.subplot(122, projection='polar')
ax2.set_rgrids(np.arange(0.2,1.0,0.4))
ax1.plot(theta,theta/6,'--',lw=2)
ax2.plot(theta,theta/6,'--',lw=2)
plt.show()

image

2.6極座標極徑標籤位置

set_rlabel_position方法用於設置極徑標籤顯示位置get

  • 參數爲標籤所要顯示在的角度
import matplotlib.pyplot as plt
import numpy as np
theta=np.arange(0,2*np.pi,0.02)
ax1= plt.subplot(121, projection='polar')
ax2= plt.subplot(122, projection='polar')
ax2.set_rlabel_position('90')
ax1.plot(theta,theta/6,'--',lw=2)
ax2.plot(theta,theta/6,'--',lw=2)
plt.show()

image

2.7極座標極徑範圍

set_rlim方法用於設置顯示的極徑範圍it

  • 參數爲極徑最小值,最大值
import matplotlib.pyplot as plt
import numpy as np
theta=np.arange(0,2*np.pi,0.02)
ax1= plt.subplot(121, projection='polar')
ax2= plt.subplot(122, projection='polar')
ax2.set_rlim(0.6,1.2)
ax1.plot(theta,theta/6,'--',lw=2)
ax2.plot(theta,theta/6,'--',lw=2)
plt.show()

image

2.8極座標極徑最大值

set_rmax方法用於設置顯示的極徑最大值

  • 該方法要在繪製完圖像後使用纔有效
import matplotlib.pyplot as plt
import numpy as np
theta=np.arange(0,2*np.pi,0.02)
ax1= plt.subplot(121, projection='polar')
ax2= plt.subplot(122, projection='polar')
ax1.plot(theta,theta/6,'--',lw=2)
ax2.plot(theta,theta/6,'--',lw=2)
ax2.set_rmax(0.6)
plt.show()

image

2.9極座標極徑最小值

set_rmin方法用於設置顯示的極徑最小值

  • 該方法要在繪製完圖像後使用纔有效
import matplotlib.pyplot as plt
import numpy as np
theta=np.arange(0,2*np.pi,0.02)
ax1= plt.subplot(121, projection='polar')
ax2= plt.subplot(122, projection='polar')
ax1.plot(theta,theta/6,'--',lw=2)
ax2.plot(theta,theta/6,'--',lw=2)
ax2.set_rmin(0.6)
plt.show()

image

2.10 極徑對數座標

set_rscale方法用於設置極徑對數座標

  • 參數值爲'linear','log','symlog'
  • 默認值爲'linear'
  • 該方法要在繪製完圖像後使用纔有效
import matplotlib.pyplot as plt
import numpy as np
theta=np.arange(0,2*np.pi,0.02)
ax1= plt.subplot(121, projection='polar')
ax2= plt.subplot(122, projection='polar')
ax1.plot(theta,theta/6,'--',lw=2)
ax2.plot(theta,theta/6,'--',lw=2)
ax2.set_rlim(math.pow(10,-1),math.pow(10,0))
ax1.set_rscale('linear')
ax2.set_rscale('symlog')
plt.show()

image

2.11 極座標極徑網格線顯示範圍

set_rticks方法用於設置極徑網格線的顯示範圍

import matplotlib.pyplot as plt
import numpy as np
theta=np.arange(0,2*np.pi,0.02)
ax1= plt.subplot(121, projection='polar')
ax2= plt.subplot(122, projection='polar')
ax2.set_rticks(np.arange(0.1, 0.9, 0.2))
ax1.plot(theta,theta/6,'--',lw=2)
ax2.plot(theta,theta/6,'--',lw=2)
plt.show()

image


想觀看Matplotlib教學視頻,瞭解更多Matplotlib實用技巧可關注

微信公衆帳號: MatplotlibClass

今日頭條號:Matplotlib小講堂

相關文章
相關標籤/搜索