簡體   English   中英

為什么我的 Matplotlib 子圖大小不同?

[英]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 更改縱橫比以遵循地圖的比例。

第一個示例在側面留下間隙而“解決方案”沒有的原因是這樣的。 由於剩余空間位於軸的頂部和底部,因此未在解決方案中顯示。 因為它在問題的雙方,它只是停留在那里。 如果您的地塊彼此相鄰而不是上方,則反之亦然。

希望它更清楚。

再一次問好!

swatchai 的評論讓我走上了正軌,我找到了罪魁禍首。 只需將 figsize 調整為 (19,19) 之類的值即可解決問題。 如果有人能准確解釋為什么會發生這種情況,我仍然會很高興。

以下是 figsize 為正方形 (19,19) 時的樣子:

此外,這里是 figsize 是正方形時的樣子的復制品。

感謝您的努力!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM