Коробчатая диаграмма с разными осями y и разными масштабами y в море - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь создать коробчатую диаграмму с разными осями y и шкалами y в seaborn, но застрял здесь.

В 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?

Заранее спасибо за вашу помощь!

Cheers Cord

1 Ответ

0 голосов
/ 16 июня 2020

Я нашел решение самостоятельно:

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

Все равно спасибо!

...