在随机位置使标记尺寸变大



我正在为数据帧链接绘制图表代码看起来像-

client = ['av']
x_axis = 'recall_at_k'
y_axis = 'precision_at_k'
color_group='facilityname'
graph_width = 1200
graph_height = 600
marker_size = 7
cutoff_marker_size = 18
symbol_group='rank_cutoff'
text = 'info'
title="test figure"
fig = px.scatter(
plot_df, 
x=x_axis, 
y=y_axis,
color=color_group,
title=title,
width=graph_width, 
height=graph_height,
text=text
)
fig.update_traces(marker={'size': np.where(plot_df['is_cutoff']==1, cutoff_marker_size, marker_size), 'line':{'width':2, 'color':'DarkSlateGrey'}},textfont_size=1)
fig.show()

这里,'is_cutoff'列是一个布尔列,当is_cutoff的值为'1'时,我想使标记的大小更大。

我面临的问题是,plotly正在使标记尺寸更大的地方,'is_cutoff'值为'0'.

来测试图形-只需查看'cala'和'each'的图形。图片链接

每个颜色组,即您的示例中的设施名称,都是一个跟踪。使用update_traces(),您可以以相同的方式更改每个痕迹的标记大小。例如,fig.update_traces(marker={'size': [18, 10, 10]})将为每个颜色组设置第一个标记的大小为18。这不是您想要的,因为您希望以不同的方式修改每个跟踪。这可以用for_each_trace()来实现。

所以用

替换fig.update_traces()
fig.for_each_trace(
lambda trace: trace.update(
marker={
'size': np.where(plot_df[plot_df.facilityname==trace.name]['is_cutoff']==1, cutoff_marker_size, marker_size),
'line':{'width':2, 'color':'DarkSlateGrey'}
},
textfont_size=1
)
)

基本上,这段代码循环遍历每个跟踪,对于每个跟踪,使用plot_df[plot_df.facilityname==trace.name]将数据帧减少到相应的行。其他的都和你的解一样

最新更新