当设置rlim时,极条形图上的条形被切断

时间:2016-11-28 04:01:31

标签: python matplotlib

我正在使用极地投影制作一些条形图。数据都是远离原点的大数字,因此我使用ax.set_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

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

这确实是一种非常奇怪的效果。

但似乎有一种解决方法使用bottom关键字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

答案 1 :(得分:0)

在matplotlib中看起来像一个愚蠢的舍入错误。我把你的数字提高了10倍,而且除了一个楔子以外都显示了正确的数字。将rlim()设置为更大的范围也显示出一些改进。如果你需要把它放在一个演示文稿中,用一个画圆圈覆盖中间。

我害怕所有的绷带....