2012-01-03 56 views
7

我已經生成柱狀圖看起來像這樣的靠不住之間的間距:matplotlib BARH產生酒吧

enter image description here

注意標籤上的垂直間距不均勻出於某種原因;我不確定這是否與我已經分配了滴答或任何實際放置文本的機制有關。相關代碼:

height_factor = 40.0 
ind = np.linspace(0,len(sorted_totals)*height_factor,num=len(sorted_totals)) 
width = 0.25 
fig = plt.figure(figsize=(15.5, 8.75),dpi=300) 
p1 = plt.barh(ind,map(int,sorted_composite[:,0]),color='blue',align='center',height=height_factor) 
p1 = plt.barh(ind,map(int,sorted_composite[:,2]),color=(0.75,0.1,0.1),align='center',height=height_factor) 
plt.ylabel('# of Picks (blue) + # of Bans (red)') 
plt.yticks(ind, sorted_totals[:,0]) 
plt.subplots_adjust(bottom=0.05, left=0.14,right=0.95,top=0.95) 
plt.ylim([ind.min() - height_factor, ind.max() + height_factor]) 

我的數據存儲在sorted_composite和IND是我用來放置棒(的ytick位置)的值。我正在使用linspace生成均勻間隔的小節,這是唯一的作品,我不確定原因。

+0

我在想,您的問題可能與具有所有這些酒吧而臨時抱佛腳,但我一直在試圖從你的代碼5到〜50條,這裏沒有問題。 – 2012-01-03 04:22:01

+0

是的,我有一種感覺這是一個像素放置四捨五入問題..即如果你有一個8像素高的圖像,並且想要通過中心繪製一條線,你是否沿着像素行4或像素行5繪製;無論哪種方式很糟糕 – user1127062 2012-01-03 07:34:43

+0

在一個側面說明我報復一個平凡的測試用例不好的結果: '從numpy的進口*' 從pylab進口* 數據=零(50)+10 IND =人氣指數(10) barh(ind,data) show()' 看起來很糟糕 – user1127062 2012-01-03 07:38:15

回答

1

與user1127062一樣,可能是因爲你的代碼很好。

如果您不需要的情節是互動的,它保存爲一個SVG

如果你運行:在

data = numpy.random.randn(10000) 
pylab.hist(data,300) 
pylab.savefig(fileName+'.svg',format='svg') 

你會看到像素鋸齒(在酒吧寬度)數字窗口,但它已經在svg文件中消失了。

如果svg與您正在做的不兼容,那麼「cairo」後端似乎能夠最好地保存png文件。它們看起來和svg的截圖一樣好。

您可以通過運行切換後端。

import matplotlib 
# you have to change the backend before importing pylab 
matplotlib.use('cairo') 
import pylab 

原始「開羅」不支持show(),所以你不能在交互模式下使用它,或者直接從程序顯示一個陰謀。

的「GTKCairo」後端有兩全其美的,但在默認安裝不啓用(至少不是我用sudo apt-get install matplotlib GOT)

如果你正在使用Ubuntu我想你需要做的就是它的工作是安裝GTK,並重新編譯matplotlib:

sudo apt-get install git-core python-gtk2-dev 
git clone git://github.com/matplotlib/matplotlib.git 
cd matplotlib 
sudo python setup.py install 

您可以檢查哪些後端是主動配合:

matplotlib.get_backend() 

你ç通過追捕你matplotlibrc文件的自動加載自己喜歡的後端,我發現礦:

/usr/local/lib/python2.7/dist-packages/matplotlib/mpl-data/matplotlibrc