我该如何创建一个带有两个y轴的seaborn箱线图?我需要这样做是因为两个数据的比例不同。我的当前代码会覆盖箱线图中的第一个箱子,例如,它将由第一个轴和第二个轴的第一个数据项中的2个数据填充。
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
import seaborn as sns
df = pd.DataFrame({'A': pd.Series(np.random.uniform(0,1,size=10)),
'B': pd.Series(np.random.uniform(10,20,size=10)),
'C': pd.Series(np.random.uniform(10,20,size=10))})
fig = plt.figure()
# 2/3 of A4
fig.set_size_inches(7.8, 5.51)
plt.ylim(0.0, 1.1)
ax1 = fig.add_subplot(111)
ax1 = sns.boxplot(ax=ax1, data=df[['A']])
ax2 = ax1.twinx()
boxplot = sns.boxplot(ax=ax2, data=df[['B','C']])
fig = boxplot.get_figure()
fig
如何防止第一个项目被覆盖?
编辑:
如果我添加了positions参数
boxplot = sns.boxplot(ax=ax2, data=df[['B','C']], positions=[2,3])
我遇到了一个异常:
TypeError: boxplot() got multiple values for keyword argument 'positions'
可能是因为seaborn已经在内部设置了该参数。
A
,然后在右侧绘制B
和C
,这是您想要的吗? - ksai