猿问

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

问题是关于'%{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
虽然问题要求的是特定的东西,但主要目标是寻求一种更灵活的方式来构建悬停文本。由于我是plotlyjavascript的新手,我可能会错过很多大图片,所以我可能会以错误的方式处理这种情况,如果是这种情况,请也指出这一点。


慕沐林林
浏览 76回答 1
1回答

墨色风雨

通常,texttemplate和hovertemplate可以访问跟踪级别的任何属性,即go.Bar()本例中的属性。因此x、y、 和customdata是可访问的:import plotly.graph_objects as gogo.Figure(go.Bar(&nbsp; &nbsp; x=["a","b"], y=[1,2], customdata=[["hi", "there"], ["hello", "there"]],&nbsp; &nbsp; hovertemplate="x is %{x}, y is %{y}, custom1 is %{customdata[1]}",&nbsp; &nbsp; texttemplate="x is %{x}, y is %{y}, custom1 is %{customdata[1]}",&nbsp; &nbsp; textposition="auto"))customdata这里可以是列表的列表(如上所述)或字典的列表,如下访问:import plotly.graph_objects as gogo.Figure(go.Bar(&nbsp; &nbsp; x=["a","b"], y=[1,2], customdata=[dict(hi="there"), dict(hi="here")],&nbsp; &nbsp; hovertemplate="x is %{x}, y is %{y}, custom1 is %{customdata.hi}",&nbsp; &nbsp; texttemplate="x is %{x}, y is %{y}, custom1 is %{customdata.hi}",&nbsp; &nbsp; textposition="auto"))该customdata格式与 Pandas 的格式兼容to_dict('records'):import plotly.graph_objects as goimport pandas as pddf = pd.DataFrame(dict(&nbsp; &nbsp; x=["a","b"], y=[1,2], hi=["there", "here"]))go.Figure(go.Bar(&nbsp; &nbsp; x=df.x, y=df.y, customdata=df[["hi"]].to_dict('records'),&nbsp; &nbsp; hovertemplate="x is %{x}, y is %{y}, custom1 is %{customdata.hi}",&nbsp; &nbsp; texttemplate="x is %{x}, y is %{y}, custom1 is %{customdata.hi}",&nbsp; &nbsp; textposition="auto"))
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答