簡體   English   中英

Matplotlib - 在極坐標圖中繪制一個光滑的圓

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM