Python Matplotlib-图形彼此堆叠
我尝试使用fig(ax)方法将两个Seaborn箱线图可视化,如下所示:Python Matplotlib-图形彼此堆叠,python,python-3.x,matplotlib,seaborn,Python,Python 3.x,Matplotlib,Seaborn,我尝试使用fig(ax)方法将两个Seaborn箱线图可视化,如下所示: import pandas as pd import matplotlib.pyplot as plt import seaborn as sns sns.set_palette('colorblind') sns.set_style('white') prd_data = pd.read_csv("Products 20171001-20200825.csv", sep=';', decim
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_palette('colorblind')
sns.set_style('white')
prd_data = pd.read_csv("Products 20171001-20200825.csv", sep=';', decimal=',')
prd_data['Product'].replace('Prd', 'Product ', regex=True, inplace=True)
prd_data_ess = prd_data.loc[prd_data['Base Type'] == 'ESS']
prd_data_premium = prd_data.loc[prd_data['Base Type'] == 'PRM']
fig, (ax0,ax1) = plt.subplots(2,1, figsize=(12,6), sharex=True, sharey=True)
ax0 = sns.boxplot(y='Product', x='Update Minutes', data=prd_data_ess, orient='h', \
order=['Product 1', 'Product 2', 'Product 3', 'Product 4'], \
boxprops=dict(alpha=0.3), color='#05BDC7')
ax0.set_xlim(0)
ax0.set_title('Products ESS - Update Minutes')
ax0.set(xlabel='')
ax0.set(ylabel='')
ax0.plot()
ax1 = sns.boxplot(y='Product', x='Update Minutes', data=prd_data_premium, orient='h', \
order=['Product 1', 'Product 2', 'Product 3', 'Product 4'], \
boxprops=dict(alpha=0.3), color='#E63322')
ax1.set_xlim(0)
ax1.set_title('Products PRM - Update Minutes')
ax1.set(xlabel='')
ax1.set(ylabel='')
ax1.plot()
plt.show
但我最终得到的视觉效果是ax0为空,ax0和ax1的数据都打印在ax1上,使得第二个视觉效果混乱,如下所示:
你能帮我找出问题的原因吗
谢谢。而不是
ax0=sns.boxplot(…)
您需要sns.boxplot(..,ax=ax0)
和类似的第二个绘图:sns.boxplot(..,ax=ax1)
默认情况下,seaborn对绘图使用。通过提供ax=
参数,可以在另一个ax
上绘图。Seaborn还返回它使用的ax
,然后可用于更改绘图(勾选设置、标签等)。请注意,当未给出显式的ax
时,多个seaborn函数将连续使用相同的ax
还请注意,一些seaborn函数可以创建一个,并返回一个
FaceGrid
对象,而不是ax
嗨,Johan,解决了这个问题!非常感谢你的帮助!你能把你的答复作为答复吗?看起来你是把它作为评论加上去的,我无法对它投赞成票。