有点棘手的解释。我正在尝试使用来自相同数据帧(df)的数据创建两个包含直方图和箱线图的子图,该数据帧具有两列(不同长度)'price_cml15'和'price_nw15'。在制作这些图时,我想只从每列中选择一部分数据(如用于选择我想要的数据范围的minx和maxx变量所示)。最终想要做一个遍历各种范围的for循环,目前适用于直方图,但我不能做箱形图。直方图很好我无法弄清楚如何让箱图显示两列的特定范围。使用下面的代码(sns.boxplot部分)我可以从一列(price_cml15)中提取范围,但不能让它在同一个boxplot中并排执行这两个列,并且无法将其标记为这个boxplot数据正确。这是我现有的代码:
#creates overlapping histograms and boxplot for nw and cml dataframes#
#set minimum and maximum values for x axis#
minx = 0
maxx = 500000
#overlaps plots on top of eachother and sets figsize#
fig, ax = plt.subplots(1,2,figsize=(16,4))#,sharey=True, sharex=True)
#set number of bins#
n_bins=100
#selects columns from dataframe(df) to be plotted along with
characteristics#
ax[0].hist(df['price_cml15'], bins=n_bins, range=(minx,maxx), normed=True,
edgecolor='red', facecolor='None', linewidth=2, label='cml15')
ax[0].hist(df['price_nw15'], bins=n_bins, range=(minx,maxx), normed=True,
color='blue', edgecolor='black', alpha = 0.5, linewidth=1, label='nw15')
ax[0].set_yticklabels([])
ax[0].legend()
sns.boxplot(data=(df.loc[(df['price_cml15']>= minx) & (df['price_cml15'] <=
maxx), 'price_cml15']), ax=ax[1])
#saves fig as .png#
fig.savefig(r'A:\Live system\Monthly
processing\NW_cml_15_100bins_0to500k.png')
此代码创建了以下附加的子图,因为您可以看到它适用于一列,但它没有正确标记,我已经尝试了很多方法来为同一个boxplot上的两个列执行此操作但是无济于事。任何帮助将非常感激!一旦我解决了这个问题,我认为for循环应该非常简单。
非常感谢