我正在尝试彼此相邻创建两个直方图。我的问题是左边的x
标签延伸到右边的标签,如下所示:
以下是我如何设置情节
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"])
的年龄。我怎么能这样做
答案 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 = 2
,num = 1
对应于左上角,num = 2
对应于右上角,num = 3
对应于左下角,num = 4
对应于右下角。这意味着您可以使用fig.add_subplot(2, 2, 2)
添加右上角的子图(使用2 x 2网格),请参见下面的图4.
(图1:只从你的代码中添加了ax1)
(图2:从代码中添加ax2)
(图3:以正确的方式并排添加ax1和ax2)
(图4:只添加了右上角的子图,fig.add_subplot(2, 2, 2)
。在2 x 2网格中还有3个空位。)