2017-03-09 123 views
0

我生成曲线像这样的: enter image description here避免重复蜱matplotlib

当使用较少的蜱,情节非常适合和酒吧都足够宽,以正确地看到它们。尽管如此,当有很多蜱虫时,并不是让这个小块变大,而是压缩斧头,导致细条和重叠的蜱虫文本。

这发生在plt.show()plt.save_fig()

是否有任何解决方案,因此它将图形绘制在一个比例尺中,以保证条具有指定的宽度,而不是更多(如果滴答数太少)而不是更少(太多,重叠)?

编辑: 是的,我使用的是barh,是的,我设置height为固定值(8):

height = 8   
ax.barh(yvalues-width/2, xvalues, height=height, color='blue', align='center') 
ax.barh(yvalues+width/2, xvalues, height=height, color='red', align='center') 
+0

您正在使用什么命令? 'plt.barh'?你尝试调整在手动http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.barh指定的参数...也许'height'将有助于迫使条宽和规模的身影。如果没有,你可能必须计算手的大小从您的数据(取决于最大(数据)-min(数据)和最小(np.diff(数据)) – Ilja

+0

@Ilja是的,我使用BARH和设置高度参数,所以没有办法,只能手动计算大小,我该如何手动设置大小? –

回答

0

我不太理解你的代码,看来你用相同的(只移动)yvalues做两个地块,但图像看起来并不如此。如果你有align=center,你确定要转移width/2吗?无论如何,要改变图像大小:

不,我不确定没有其他方式,但我没有看到手册中的任何内容一目了然。手动设置图像尺寸:

fig = plt.figure(figsize=(5, 80)) 
ax = fig.add_subplot(111) 
...your_code 

尺寸以厘米为单位。可以预先计算它,尝试例如

import numpy as np 
fig_height = (max(yvalues) - min(yvalues))/np.diff(yvalue) 

这将(大约)设置为一厘米,这是太多蜱之间的最小距离,但要尽量调整。

0

我觉得你的情况下,两个解决方案:

  1. 如果您想要绘制直方图,使用hist功能[1]。这会自动删除您的数据。你甚至可以,只要你设置Alpha值绘制多个重叠的直方图低于1 See this post

    import matplotlib.pyplot as plt 
    import numpy as np 
    
    x = mu + sigma*np.random.randn(10000) 
    plt.hist(x, 50, normed=1, facecolor='green', 
         alpha=0.75, orientation='horizontal') 
    
  2. 还可以识别你的轴蜱间隔。这将每10个项目打勾。但我怀疑这会解决你的问题。

    import matplotlib.ticker as ticker 
    
    ... 
    ax.yaxis.set_major_locator(ticker.MultipleLocator(10))