Я хочу построить коробчатую диаграмму из нескольких столбцов фрейма данных. С помощью R я могу поиграть с осью и установить различные диапазоны, чтобы отображать графики так, как я хочу. Однако в python я могу иметь только один диапазон и не могу устанавливать разные диапазоны для разных столбцов. Как я могу построить коробчатую диаграмму в python, похожую на ggplot2?
Фрагмент моего кода выглядит следующим образом. Я также помещаю результаты ggplot, seaborn и plotly.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_excel('data-rta-3phase-boxplot.xlsx', header=0)
sns.boxplot(x="variable", y="value", data=pd.melt(df))
plt.show()
import plotly.graph_objects as go
fig = go.Figure()
for col in df:
fig.add_trace(go.Box(y=df[col].values, name=df[col].name))
fig.show()
То, что я хочу, выглядит так (создано с помощью ggplot2 в R)
and these are what I get in plotly and seaborn
введите описание изображения здесь
ОБНОВЛЕНИЕ !!!!!
Под руководством сообщества мне удалось создать полностью управляемый код для рисования коробчатых диаграмм.
import pandas as pd
import plotly.express as px
df = pd.read_excel('data-rta-3phase-boxplot.xlsx', header=0)
fig = px.box(df.melt(), y="value", facet_col="variable", boxmode="overlay", color="variable")
fig.update_yaxes(matches=None)
for i in range(len(fig["data"])):
yaxis_name = 'yaxis' if i == 0 else f'yaxis{i + 1}'
fig.layout[yaxis_name].showticklabels = True
fig.update_layout(legend = dict(bgcolor = 'white'))
fig.update_layout(plot_bgcolor='white')
fig.update_xaxes(showline=True, linewidth=2, linecolor='black')#, mirror=True)
fig.update_yaxes(showline=True, linewidth=2, linecolor='black')#, mirror=True)
fig.update_xaxes(showgrid=True, gridwidth=1, gridcolor='gray')
fig.update_yaxes(showgrid=True, gridwidth=1, gridcolor='gray')
fig.show()