2016-11-28 31 views
2

我正在使用極座標投影法制作一些條形圖。數據都是遠離原點的大數字,因此我使用ax.set_rlim來使它們更易於區分。但是,當我設置rlim時,會在原點周圍切掉一些條。當我沒有設置rlim時,這不是問題,但我不能像這樣呈現我的數據。爲什麼會發生這種情況,有沒有辦法解決這個問題?設置rlim時,極地條形圖上的條被切斷

這是問題的一個例子:

import matplotlib 
import numpy as np 

Sectors = np.arange(0,2*np.pi,np.pi/4) 
Data = np.array([100,99,100,101,100.5,100.25,99.25,99.75]) 
fig, ax = plt.subplots(nrows = 1, ncols = 1, subplot_kw={'projection': 'polar'}) 
ax.bar(Sectors,Data) 
ax.set_rlim(98,102) 
plt.show() 

enter image description here

注意,如果我不應用RLIM這不會發生。例如:

import matplotlib 
import numpy as np 

Sectors = np.arange(0,2*np.pi,np.pi/4) 
Data = np.array([100,99,100,101,100.5,100.25,99.25,99.75]) 
fig, ax = plt.subplots(nrows = 1, ncols = 1, subplot_kw={'projection': 'polar'}) 
ax.bar(Sectors,Data) 
#ax.set_rlim(98,102) 
plt.show() 

enter image description here

任何幫助,不勝感激!

回答

1

這的確是一個很奇怪的效果。

但似乎有一個解決方法,使用關鍵字bar。訣竅是將bottom設置爲rlim(本例中爲98),並指定相對於底部值的數據。

import matplotlib.pyplot as plt 
import numpy as np 

Sectors = np.arange(0,2*np.pi,np.pi/4) 
Data = np.array([100,99,100,101,100.5,100.25,99.25,99.75]) 
fig, ax = plt.subplots(nrows = 1, ncols = 1, subplot_kw={'projection': 'polar'}) 
ax.bar(Sectors,Data-98, bottom=98) 
ax.set_rlim(98,102) 
plt.show() 

enter image description here

+0

這很好。謝謝! –

0

看起來像matplotlib中的一個愚蠢的舍入錯誤。我把你的數字提高了10倍,除了一個楔子都顯示正確。將rlim()設置爲更大的範圍也顯示出一些改進。如果你需要把它放在演示文稿中,用圓圈畫出中間的部分。

所有創可貼恐怕....

+0

如果我不能在python解決它,我認爲我會.SVG輸出和Inkscape的手工修復。 –