【问题标题】:plotly making marker size bigger at random locations在随机位置使标记大小变大
【发布时间】:2021-11-09 20:40:51
【问题描述】:

我正在为数据框绘制图表 - 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

【问题讨论】:

  • @MahurYadav 请按照here 的描述包含您的数据框样本。目的是让那些试图帮助您专注于解决问题而不是重新创建问题的人更容易。由于您的问题不再依赖第三方资源,因此内置的数据样本也将提高可重复性,从而增加帖子对未来读者的价值。

标签: python python-3.x plotly plotly-python


【解决方案1】:

每个颜色组,即您示例中的设施名称,都是一个跟踪。 使用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] 的相应行。其他一切都与您的解决方案相同。

【讨论】:

    猜你喜欢
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 2017-12-07
    • 2020-12-15
    • 1970-01-01
    • 2019-10-13
    相关资源
    最近更新 更多