使用mpl_toolkits.axes_grid1库中的host_subplot()函数在python中绘制双y轴箱线图
发布时间:2023-12-29 17:57:14
在Python中,可以使用mpl_toolkits.axes_grid1库中的host_subplot()函数绘制双y轴箱线图。下面我们来看一个使用例子。
首先,需要导入相应的库和模块:
import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1 import host_subplot import mpl_toolkits.axisartist as AA import numpy as np
然后,我们可以生成一些随机数据:
np.random.seed(1) data1 = np.random.normal(0, 1, 100) data2 = np.random.normal(0, 2, 100) data3 = np.random.normal(0, 3, 100)
接下来,我们可以创建一个包含两个y轴的subplot:
# 创建一个使用host_subplot函数创建一个2x1的subplot fig, ax1 = plt.subplots() ax2 = ax1.twinx()
然后,我们可以绘制 个箱线图,并将其与 个y轴相关联:
# 绘制 个箱线图,并与 个y轴相关联 box1 = ax1.boxplot(data1, positions=[1], vert=False) ax1.set_xlim([-10, 10]) ax1.set_ylim([0.5, 1.5])
接着,我们可以绘制第二个箱线图,并将其与第二个y轴相关联:
# 绘制第二个箱线图,并与第二个y轴相关联 box2 = ax2.boxplot(data2, positions=[2], vert=False) ax2.set_ylim([0.5, 1.5])
最后,我们可以绘制第三个箱线图,并将其与 个y轴相关联:
# 绘制第三个箱线图,并与 个y轴相关联 box3 = ax1.boxplot(data3, positions=[3], vert=False) ax1.set_ylim([0.5, 1.5])
接下来,我们可以设置图例并显示图形:
# 设置图例 ax1.legend([box1["boxes"][0], box3["boxes"][0]], ["Data 1", "Data 3"], loc="upper left") # 显示图形 plt.show()
这样就可以生成一个包含双y轴的箱线图了。注意,要正确显示第二个y轴的数据范围,我们需要设置两个y轴的刻度范围。
完整代码如下:
import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1 import host_subplot import mpl_toolkits.axisartist as AA import numpy as np np.random.seed(1) data1 = np.random.normal(0, 1, 100) data2 = np.random.normal(0, 2, 100) data3 = np.random.normal(0, 3, 100) fig, ax1 = plt.subplots() ax2 = ax1.twinx() box1 = ax1.boxplot(data1, positions=[1], vert=False) ax1.set_xlim([-10, 10]) ax1.set_ylim([0.5, 1.5]) box2 = ax2.boxplot(data2, positions=[2], vert=False) ax2.set_ylim([0.5, 1.5]) box3 = ax1.boxplot(data3, positions=[3], vert=False) ax1.set_ylim([0.5, 1.5]) ax1.legend([box1["boxes"][0], box3["boxes"][0]], ["Data 1", "Data 3"], loc="upper left") plt.show()
运行上述代码,就可以生成一个双y轴箱线图,其中 个和第三个箱线图与 个y轴相关联,而第二个箱线图与第二个y轴相关联。在图例中,我们可以标注出每个箱线图所代表的数据。
希望以上例子能够帮助你理解如何使用mpl_toolkits.axes_grid1库中的host_subplot()函数来绘制双y轴箱线图。
