gpt4 book ai didi

python - 如何绘制具有不同范围的多列的箱线图

转载 作者:行者123 更新时间:2023-12-04 04:02:20 26 4
gpt4 key购买 nike

我想绘制数据框多列的箱线图。使用 R,我可以使用轴并设置不同的范围以按照我想要的方式显示图。但是在 python 中,我只能有一个范围,并且不能为不同的列设置不同的范围。我如何在类似于 ggplot2 的 python 中绘制箱线图?
我的代码片段如下。我也放了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()
我想要的看起来像这样(用 R 中的 ggplot2 创建)
enter image description here
这些是我在 plotly 和海洋中得到的
enter image description here
enter image description here
更新!!!!!
在社区的指导下,我设法创建了一个完全可控的代码来绘制箱线图。
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()

最佳答案

如果你愿意使用 plotly express,你可以使用 facets 资源并将 y 轴设置为在 facet 之间不匹配:

import plotly.express as px
px.box(df.melt(), y='value', facet_col='variable').update_yaxes(matches=None)

关于python - 如何绘制具有不同范围的多列的箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62901783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com