我正在尝试以绘图方式制作这个 ridgeplot 图表,它大部分工作正常,但由于某种原因,顶部轨迹被切断,我不知道如何将轨迹向下移动一点。我可以通过拖动轴来手动完成
我拥有的代码
for i, time_unit in enumerate(time_units):
fig = go.Figure()
df_year = df[df['year'] == time_unit]
months = sorted(df['month'].unique())
for j, month in enumerate(months):
df_month = df_year[df_year['month'] == month]
fig.add_trace(go.Violin(
x=df_month['metric_value'],
name=calendar.month_name[month],
side='negative',
box_visible=False
))
fig.update_layout(
title=f'Ridge Plot for Year {time_unit}',
xaxis_title='Metric Value',
yaxis_title='Month',
yaxis=dict(automargin=True, domain=[0.00, 0.00], autorange='reversed',),
violingap=0,
violingroupgap=0,
violinmode='overlay',
height=1200
)
fig.show()
需要调整的是
domain
参数。此参数控制轴在绘图区域内占据的空间。
当前的代码将 y 轴设置为
domain=[0.00, 0.00]
,这意味着它占据了零空间,因此不可见。要向下移动轨迹,需要增加域的上限。例如,
domain=[0.0, 0.9]
将使 y 轴占用绘图区域的 90%,从底部开始。
以下是如何修改代码的方法:
for i, time_unit in enumerate(time_units):
fig = go.Figure()
df_year = df[df['year'] == time_unit]
months = sorted(df['month'].unique())
for j, month in enumerate(months):
df_month = df_year[df_year['month'] == month]
fig.add_trace(go.Violin(
x=df_month['metric_value'],
name=calendar.month_name[month],
side='negative',
box_visible=False
))
fig.update_layout(
title=f'Ridge Plot for Year {time_unit}',
xaxis_title='Metric Value',
yaxis_title='Month',
yaxis=dict(automargin=True, domain=[0.0, 0.9], autorange='reversed'), # Adjust domain here
violingap=0,
violingroupgap=0,
violinmode='overlay',
height=1200
)
fig.show()
可以尝试不同的
domain
值,直到获得所需的布局。