[英]Matplotlib - Drawing a smooth circle in a polar plot
我非常喜歡matplotlib的極地情節,並且願意繼續使用它(因為我的數據點無論如何都以極坐標給出,我的環境是圓形的)。
但是,在圖中,我想在特定點添加給定半徑的圓。
通常,我會這樣做:
ax = plt.subplot(111)
ax.scatter(data)
circle = plt.Circle((0,0), 0.5)
ax.add_artist(circle)
plt.show()
但是,在極坐標中,我不能使用圓,因為它采用直角坐標。
我想出的想法是:生成具有恆定徑向坐標的點陣列和[0,2PI]中的角坐標或完全切換到直角坐標。 這兩種解決方案都不是很令人滿意 - 使用matplotlib可以做得更好嗎?
謝謝!
您可以設置Circle
transform
參數:
%matplotlib inline
import pylab as pl
import numpy as np
N = 100
theta = np.random.rand(N)*np.pi*2
r = np.cos(theta*2) + np.random.randn(N)*0.1
ax = pl.subplot(111, polar=True)
ax.scatter(theta, r)
circle = pl.Circle((0.5, 0.3), 0.2, transform=ax.transData._b, color="red", alpha=0.4)
ax.add_artist(circle)
輸出:
或者如果你不喜歡使用private屬性,則transform=ax.transProjectionAffine + ax.transAxes
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.