2013-10-15 28 views
3

這是一個相當具體的請求,但我想知道是否有人解決了這個特定的問題。當一個情節包含一個顏色條時,Matplotlib似乎試圖將顏色條和情節本身擠壓成一個方形邊界框。有沒有辦法讓曲線本身完全符合你想要的尺寸(最好是縱橫比爲1),同時還有一個彩條?有沒有一個聰明的方法來做到這一點,以便你不必猜測和檢查?添加彩條時Matplotlib圖變爲非方形

Cramped

代碼如下:

plt.figure(figsize=(8,8)) 
props = dict(boxstyle='round', facecolor='#C0C0C0', alpha=1) 
plt.hexbin(p_binned[7],q_binned[7],extent=(0,1,0,1),gridsize=50,cmap='bone') 
plt.colorbar() 
text_content = "{:1.3f} ".format(bins[7]/r200_MediumMass2) 
plt.text(0.05, 0.95, text_content + r"$r/r_{200}$", fontsize=16, verticalalignment='top', bbox=props) 
plt.xlabel('p') 
plt.ylabel('q',rotation='horizontal') 
plt.ylim(0,1) 
plt.xlim(0,1) 
plt.show() 

謝謝!

+0

最好發佈將重新產生您的問題的示例代碼。 – tacaswell

+0

添加了代碼,它再現了我的問題。 – astromax

回答

3

您可以強制軸的縱橫比是一個通過

ax.set_aspect('equal') 

和重新大小的身材,你想

fig.set_size_inches([height, width],forward=True) 

你可以什麼都尺寸(英寸)使用

art.get_window_extent() 

要獲得顯示單位中任何藝術家的大小,您可以使用它以編程方式重新調整大小NGS。

mpl應該如何在顏色條中添加?

+0

有沒有一種方法可以在不創建無花果和斧頭的情況下實現相同的結果? (即 - 我的代碼的方式顯示在上面) – astromax

+0

啊 - 我想通了:axes()。set_aspect('equal') – astromax

+1

@astromax看到這個答案︰http://stackoverflow.com/questions/14254379/how- can-i-attach-a-pyplot-function-to-a-figure-instance/14261698#14261698您已經創建了'fig'和'ax'對象,'plt'只是將它們隱藏起來。 – tacaswell