2017-10-14 87 views
1

我正在使用Seaborn來繪製極座標圖。這裏是我的代碼:Seaborn - 極座標圖 - 如何更改FacetGrid中的度數

r = np.linspace(0, 10, num=100) 
df = pd.DataFrame({'r': r, 'rs': r}) 
df = pd.melt(df, id_vars=['r'], var_name='measure', value_name='theta') 
g = sns.FacetGrid(df, col="measure", hue="measure", 
       subplot_kws=dict(projection='polar'), size=4, 
       sharex=False, sharey=False, despine=False) 

g.map(plt.scatter, "theta", "r") 

,輸出是: enter image description here

正如你看到的學位是0,45,90,...... 我怎樣才能改變這個時間間隔?

編輯1:感謝@Julio丹尼爾雷耶斯,度問題已經解決,但現在我有另一個問題:我需要一個點之間的線。這裏我不需要點。我檢查了matplotlib文檔,但找不到解決方案。我試圖linewidths.scatter(x,y,linewidths)

沒有工作對我來說,我需要這樣的:

enter image description here

編輯2因爲我改變了我這樣的代碼:

ax = plt.subplot(111, polar=True) 
ax.scatter(x=[radians(x) for x in df['degree'].values], 
y=df['value'].values) 

用情節代替散點圖對我來說並不合適!

問候。

+1

應該嘗試用'ax.plot([弧度(X)爲DF [ '度' X]值],DF [ '值']值)' –

+0

如果適合您,請接受我的回答。 –

回答

2

您可以設置弧度蜱是這樣的:

angle_ticks = np.multiply([0.5, 1.0, 1.5, 1.75, 2.0], np.pi) 
g.set(xticks=angle_ticks) 

或者如果你喜歡

n_ticks = 10 
angle_ticks = np.linspace(0, 2 * np.pi, num=n_ticks + 1)[:-1] 
g.set(xticks=angle_ticks) 

更新1: 爲了得到一個行,而不是你只需要更換plt.scatterplt.plot是這樣的:

g.map(plt.plot, "theta", "r") 

更新2: 爲了您的最新代碼:

ax.plot([radians(x) for x in df['degree'].values], df['value'].values) 
+0

tnx,但沒有用我的新代碼。 (有問題編輯)ax = plt.subplot(111,polar = True) ax.scatter(x = [radians(x)for df ['degree'] .value],y = df ['value'] .values) – Adel

+1

更新了答案,很高興它的工作 –