[英]Why are my Matplotlib subplots sized differently?
你好呀!
我正在嘗試創建一個由葉綠素 map 和 Matplotlib 中的條形 plot 組成的圖形。 為了實現這一點,我將 Geopandas 庫與 Pandas 和 Matplotlib 一起使用。 我遇到了一個有趣的問題,我在互聯網上找不到任何答案。 這是問題所在:
如上圖所示,頂部的 map(由 Geopandas 生成)與底部條形圖的寬度不同。 圖的左側和右側有太多空白。 我想擺脫這個空白並使 map 水平適合分配給它的空間。 我還在下面為那些希望重新創建它的人留下了一個代碼示例:
fig = plt.figure(figsize = (25.60,14.40)) #Here, i am setting the overall figure size
ax_1 = fig.add_subplot(2,1,1) #This will be the map
istanbul_districts.plot(ax = ax_1,
edgecolor = "black",
alpha = 1,
color = "Red") #Istanbul_districts is a GeoDataFrame object.
ax_2 = fig.add_subplot(2,1,2)
labels = list(health.loc[:,"district_eng"].value_counts().sort_values(ascending = False).index)
from numpy import arange
bar_positions = arange(len(labels)) + 1
bar_heights = h_inst_per_district_eng.loc[:,"health_count"].values.astype(int)
ax_2.bar(bar_positions,bar_heights,
width = 0.7,
align = "center",
color = "blue") #This is a generic barplot from Matplotlib
我要留下第二張圖片,顯示上面代碼片段的最終結果:
上面可以清楚地看到,兩個子圖的軸不在同一個位置開始和結束。 也許這可能是問題所在? 怎么做才能使它們的大小相同?
感謝所有那些提前回答他們的時間!
添加解釋,因為您找到了一個解決方案。
如果您以您所做的方式指定帶有兩個軸的 matplotlib 圖形,您會將該圖形分成兩半。 兩個軸是相同的。 假設圖形的原始比例是 1:1,你的軸都是 1:2。
這個任意比率對於條形圖來說是很好的,它可以縮放到基本上任何比率。 它是水平的還是垂直的(從繪圖的角度來看,而不是數據可視化)並不重要。
但是,如果您希望 map 顯示正確的非扭曲形狀,則不能只指定縱橫比。 那只是跟隨數據。 因此,如果您有一個 map,其邊界框的比例為 1:1,您不能指望它會填滿整個 1:2 軸。 GeoPandas 更改縱橫比以遵循地圖的比例。
第一個示例在側面留下間隙而“解決方案”沒有的原因是這樣的。 由於剩余空間位於軸的頂部和底部,因此未在解決方案中顯示。 因為它在問題的雙方,它只是停留在那里。 如果您的地塊彼此相鄰而不是上方,則反之亦然。
希望它更清楚。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.