2017-03-09 112 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))