2014-03-12 146 views
2

感謝這個非常有幫助的post,我終於想出瞭如何製作極座標填​​充等高線圖。然而,當我轉移到下一步並嘗試將散點添加到同一個圖中時,我遇到了一些問題。這裏是原始腳本:重疊極座標和散點圖

import numpy as np 
import matplotlib.pyplot as plt 

#-- Generate Data ----------------------------------------- 
# Using linspace so that the endpoint of 360 is included... 
azimuths = np.radians(np.linspace(0, 360, 20)) 
zeniths = np.arange(0, 70, 10) 

r, theta = np.meshgrid(zeniths, azimuths) 
values = np.random.random((azimuths.size, zeniths.size)) 

#-- Plot... ------------------------------------------------ 
fig, ax = plt.subplots(subplot_kw=dict(projection='polar')) 
ax.contourf(theta, r, values) 

plt.show() 

它生產這個圖片: Polar filled contour without scatter

如果我還添加了一個散點圖:

#-- Plot... ------------------------------------------------ 
fig, ax = plt.subplots(subplot_kw=dict(projection='polar')) 
ax.contourf(theta, r, values) 
ax.scatter(np.radians(140), 40, s=20, c='White') 

我得到,而不是這個形象:

Polar filled contour with scatter

爲什麼填充輪廓和座標軸之間是否有白色邊框?我如何擺脫它?

非常感謝!

回答

2

Ops,對不起,在問我的問題兩分鐘後,我的答案出現了。我只是意識到,添加一個散點圖以某種方式改變了軸限制。強制軸到期望的時間間隔可以解決問題。

fig, ax = plt.subplots(subplot_kw=dict(projection='polar')) 
ax.contourf(theta, r, values) 
ax.scatter([np.radians(140)], [40], s=20, c='White') 
ax.set_rmax(60) 
ax.set_rmin(0) 

enter image description here

我以爲我可以離開的問題上反正,它仍然可以幫助其他用戶。

+1

+1發生什麼是'ax.scatter'使用「鬆散」自動縮放(即它選擇偶數數字作爲軸限制),而「ax.contourf」使用「緊縮」自動縮放(即嚴格使用數據限制)。在調用'contourf'之後,調用'scatter'之前,您可以調用'ax.autoscale(False)'來代替手動設置限制。 –

+0

啊!這非常有趣,謝謝你的信息! – Cronopio