在随机位置巧妙地使标记尺寸变大
plotly making marker size bigger at random locations
我正在为数据框绘制图表 - link
代码看起来像 -
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”时,我想使标记大小更大。
我面临的问题是,在 'is_cutoff' 值为 '0'.
的地方,plotly 使标记尺寸变大
测试图表 - 只需查看 'cala' 和 'each' 的图表。图片 link
每个颜色组,即您示例中的设施名称,都是一条轨迹。
使用 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]
对应的行。其他一切都与您的解决方案相同。
我正在为数据框绘制图表 - link 代码看起来像 -
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”时,我想使标记大小更大。
我面临的问题是,在 'is_cutoff' 值为 '0'.
的地方,plotly 使标记尺寸变大测试图表 - 只需查看 'cala' 和 'each' 的图表。图片 link
每个颜色组,即您示例中的设施名称,都是一条轨迹。
使用 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]
对应的行。其他一切都与您的解决方案相同。