为了账号安全,请及时绑定邮箱和手机立即绑定

在plotly中的“%{variable}”语法中可以使用什么变量

在plotly中的“%{variable}”语法中可以使用什么变量

慕沐林林 2023-09-21 17:02:26
问题是关于'%{variable}'下面引用的代码中的语法,特别是函数中的和hovertemplate, textkwargscustomdatago.Bar()fig = go.Figure(    data=[        go.Bar(            name=coln, x=df.index, y=df[coln],             # coln means columnName                        hovertemplate = '%{x}' + '%{y}' # <============= this thing here            + '%{text}' + '%{customdata} + %{coln}',             # can access x,y,text,customdata. ie. all kwargs of this trace ("trace" is a plotly technical term, meaning, this bar plot)            # can NOT access any other my own variables like df or coln            customdata = [coln]*len(df.index),            text = [                '<b>colname==</b>:'+ another_df.loc[coln] + somefunction(coln)                # can only do things around df and coln, not x nor y   <============= and this thing here            ]*len(df.index),        ) for coln in df.columns    ],  )我无法规避的限制:在hovertemplatekwarg 中,我只能访问x, y, text and customdata,%{coln}无法工作在textand customdatakwarg 中,我可以访问colnand df,但是,%{x} 不起作用,x因为变量不起作用。另外,text这 customdata是我可以访问的唯一地方coln,没有其他“自定义数据持有者”text 另外,由于我们在这里,构建customdata一个与绘图 x 轴长度相同的列表非常麻烦,即*len(df.index)我正在寻找的是:类似 python f 字符串的f"{x} {y} {coln}"语法,可以自由访问x, y, coln,以及在跟踪中自由使用x y, like:df.at[x, y]或。myfoo(x, y)PS虽然问题要求的是特定的东西,但主要目标是寻求一种更灵活的方式来构建悬停文本。由于我是plotly和javascript的新手,我可能会错过很多大图片,所以我可能会以错误的方式处理这种情况,如果是这种情况,请也指出这一点。
查看完整描述

1 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

通常,texttemplate和hovertemplate可以访问跟踪级别的任何属性,即go.Bar()本例中的属性。因此x、y、 和customdata是可访问的:


import plotly.graph_objects as go


go.Figure(go.Bar(

    x=["a","b"], y=[1,2], customdata=[["hi", "there"], ["hello", "there"]],

    hovertemplate="x is %{x}, y is %{y}, custom1 is %{customdata[1]}",

    texttemplate="x is %{x}, y is %{y}, custom1 is %{customdata[1]}",

    textposition="auto"

))

customdata这里可以是列表的列表(如上所述)或字典的列表,如下访问:


import plotly.graph_objects as go


go.Figure(go.Bar(

    x=["a","b"], y=[1,2], customdata=[dict(hi="there"), dict(hi="here")],

    hovertemplate="x is %{x}, y is %{y}, custom1 is %{customdata.hi}",

    texttemplate="x is %{x}, y is %{y}, custom1 is %{customdata.hi}",

    textposition="auto"

))

该customdata格式与 Pandas 的格式兼容to_dict('records'):


import plotly.graph_objects as go

import pandas as pd


df = pd.DataFrame(dict(

    x=["a","b"], y=[1,2], hi=["there", "here"]

))


go.Figure(go.Bar(

    x=df.x, y=df.y, customdata=df[["hi"]].to_dict('records'),

    hovertemplate="x is %{x}, y is %{y}, custom1 is %{customdata.hi}",

    texttemplate="x is %{x}, y is %{y}, custom1 is %{customdata.hi}",

    textposition="auto"

))


查看完整回答
反对 回复 2023-09-21
  • 1 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信