错误的y轴范围使用matplotlib子图和seaborn

时间:2016-04-21 10:08:40

标签: python matplotlib 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()

enter image description here

更新:我用以下代码修改了上述代码:

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

如果我在任何轴上绘制数据,但最后一个我获得了我正在寻找的东西: enter image description here 当然我不想要空框架。所有图表都呈现出具有类似视觉方面的数据。 当数据绘制在最后一个轴上时,它会得到一个像第一个例子中那样太宽的y范围。只有最后一个轴似乎有这个问题。任何线索?

1 个答案:

答案 0 :(得分:1)

如果您希望所有轴上的比例相同,您可以使用此命令创建子图:

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

这将使所有图表共享相关的轴:

enter image description here

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

ax4.set_ylim(top=5) 

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

这将是这样的:

enter image description here