簡體   English   中英

錯誤的y軸范圍使用matplotlib子圖和seaborn

[英]wrong y axis range using matplotlib subplots and seaborn

我是第一次玩seaborn,嘗試使用matplotlib子圖在不同的圖上繪制不同的pandas數據列。 下面的簡單代碼產生了預期的數字,但最后一個圖沒有正確的y范圍(它似乎與數據幀中的整個值范圍相關聯)。 有誰知道為什么會發生這種情況以及如何預防? 謝謝。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pds
import seaborn as sns

X = np.arange(0,10)
df = pds.DataFrame({'X': X, 'Y1': 4*X, 'Y2': X/2., 'Y3': X+3, 'Y4': X-7})

fig, axes = plt.subplots(ncols=2, nrows=2)
ax1, ax2, ax3, ax4 = axes.ravel()
sns.set(style="ticks")
sns.despine(fig=fig)

sns.regplot(x='X', y='Y1', data=df, fit_reg=False, ax=ax1)
sns.regplot(x='X', y='Y2', data=df, fit_reg=False, ax=ax2)
sns.regplot(x='X', y='Y3', data=df, fit_reg=False, ax=ax3)
sns.regplot(x='X', y='Y4', data=df, fit_reg=False, ax=ax4)

plt.show()

在此輸入圖像描述

更新:我修改了上面的代碼:

fig, axes = plt.subplots(ncols=2, nrows=3)
ax1, ax2, ax3, ax4, ax5, ax6 = axes.ravel()

如果我在任何軸上繪制數據,但最后一個我獲得了我正在尋找的東西: 在此輸入圖像描述 當然我不想要空框架。 所有圖表都呈現出具有類似視覺方面的數據。 當在最后一個軸上繪制數據時,它會像第一個示例中那樣過寬。 只有最后一個軸似乎有這個問題。 任何線索?

如果希望所有軸上的比例相同,可以使用以下命令創建子圖:

fig, axes = plt.subplots(ncols=2, nrows=2, sharey=True, sharex=True)

這將使所有圖表共享相關軸:

在此輸入圖像描述

如果您想手動更改特定ax的限制,可以在繪圖命令的末尾添加此行:

ax4.set_ylim(top=5) 

# or for both limits like this: 
# ax4.set_ylim([-2, 5])

哪個會給出這樣的東西:

在此輸入圖像描述

暫無
暫無

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

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