python - Seaborn 中具有不同 y 轴和不同 y 尺度的箱线图

标签 python seaborn

我试图在seaborn中创建一个具有不同y轴和y尺度的箱线图,但卡在这里。

在 matplotlib 中,我可以使用以下代码来获取结果:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


# create random dataframe with different scales
df = pd.DataFrame(np.random.rand(30, 5), columns=['A', 'B', 'C', 'D', 'E'])
df['A'] *= 5
df['C'] *= 10
df['E'] *= 15


# create boxplot with a different y scale for different rows
selection = ['A', 'C', 'E']
fig, ax = plt.subplots(1, len(selection), figsize=(10, len(selection)))
i = 0
for col in selection:
    axo = df[col].plot(kind='box', ax=ax[i], showfliers=False, grid=True)
    axo.set_ylim(df[col].min(), df[col].max())
    axo.set_ylabel(col + ' / Unit')
    i += 1

plt.tight_layout()
plt.show()

产生:

enter image description here

我尝试使用seaborn箱线图替换实际的箱线图,但没有成功。

现在我的问题是:如何使用seaborn获得相同的绘图结果?

预先感谢您的帮助!

干杯 绳索

最佳答案

我自己找到了解决方案:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns


# create random dataframe with different scales
df = pd.DataFrame(np.random.rand(30, 5), columns=['A', 'B', 'C', 'D', 'E'])
df['A'] *= 5
df['C'] *= 10
df['E'] *= 15

# create boxplot with a different y scale for different rows
selection = ['A', 'C', 'E']
fig, axes = plt.subplots(1, len(selection))
for i, col in enumerate(selection):
    ax = sns.boxplot(y=df[col], ax=axes.flatten()[i])
    ax.set_ylim(df[col].min(), df[col].max())
    ax.set_ylabel(col + ' / Unit')
plt.show()

产量:

enter image description here

无论如何,谢谢!

关于python - Seaborn 中具有不同 y 轴和不同 y 尺度的箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62404884/

相关文章:

python - 超过锁定等待超时;尝试重新启动事务 MYSQL Python

python - 总结 Python 2 中计数器的所有值

python - 使用 seaborn 将次要网格线添加到 matplotlib 图

python - 使用正则表达式将数据转换为 Python 中的字典

php - Python 开发 - 将结果存储在 for 循环中

python - Pandas - 通过保留优先值,根据 Series 中的条件从 DataFrame 中删除重复行

python-3.x - 为什么我的 python 不适用于 seaborn

python - 如何在 Seaborn Jointplot 中为单个标记着色?

matplotlib - sns.clustermap 刻度丢失

python - 来自 pandas 数据框的 seaborn 时间序列