如何防止左侧x轴在matplotlib中延伸到右侧x轴?

时间:2016-08-31 15:22:01

标签: python matplotlib histogram

我正在尝试彼此相邻创建两个直方图。我的问题是左边的x标签延伸到右边的标签,如下所示: enter image description here

以下是我如何设置情节

import pandas as pd
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(16,8))
ax1 = fig.add_subplot(1,1,1)
ax1.set_xlim([min(df1["Age"]),max(df1["Age"])])
ax1 = df1["Age"].hist(color="cornflowerblue")
ax2 = fig.add_subplot(1,2,2)
ax2.set_xlim([min(df2["Age"]),max(df2["Age"])])
ax2 = df2["Age"].hist(color="seagreen")
plt.show()

我希望为每个subplot显示一个x轴,以便第一个显示从min(df1["Age"])max(df1["Age"])和另一个x轴的年龄。第二个将包括从min(df2["Age"])max(df2["Age"])的年龄。我怎么能这样做

1 个答案:

答案 0 :(得分:3)

问题是你添加ax1 = fig.add_subplot(1, 1, 1)的第一个子图将填满整个数字。第二个子图ax2 = fig.add_subplot(1, 2, 2)将跨越右侧,就好像左边有一个第一个子图(没有)。如果你想要有两个子图,宽度只有一半的大小,你应该怎么做才能使用

fig = plt.figure()
ax1 = fig.add_subplot(1, 2, 1)  # first subplot, to the left
ax2 = fig.add_subplot(1, 2, 2)  # second subplot, to the right

另一种更简洁的方法是使用plt.subplots - 函数。通过一次调用创建图形和两个轴,如

fig, (ax1, ax2) = plt.subplots(1, 2)

以下三张图片显示出现了什么问题。第一个图是在代码中添加ax1后的结果(不在我的代码中!)。然后你添加ax2,给出第二个数字,很明显原始ax1的一半被新ax2覆盖。然而,第三个图显示了两个并排的轴,这就是我的想法。

澄清编辑:在调用plt.add_subplot(rows, cols, num)时,num - 参数告知要添加的子图。即如果rows = cols = 2num = 1对应于左上角,num = 2对应于右上角,num = 3对应于左下角,num = 4对应于右下角。这意味着您可以使用fig.add_subplot(2, 2, 2)添加右上角的子图(使用2 x 2网格),请参见下面的图4.

Only ax1 added (图1:只从你的代码中添加了ax1) enter image description here (图2:从代码中添加ax2) enter image description here (图3:以正确的方式并排添加ax1和ax2) enter image description here (图4:只添加了右上角的子图,fig.add_subplot(2, 2, 2)。在2 x 2网格中还有3个空位。)