4

Plotly的文档显示了一个悬停模板,可以访问文本中的 x 和 y 值,但是我们如何访问其他列中的数据呢?

进口:

import pandas as pd  
import plotly.plotly as py
import plotly.graph_objs as go
from plotly.offline import download_plotlyjs, init_notebook_mode, plot

代码:

test_data = {"client1-percent":[90,100,60]
             , "client1-volume":[500000,3542,20000]
             , "client2-percent":[99,63,98]
             ,"client2-volume":[6423,6524,5737]
            }
df = pd.DataFrame(test_data)

data = [go.Scatter(
    x = df.index.values
    , y = df.loc[:,col].values
    , hovertemplate = "Percent: %{y:.1f}% | Volume: {}"
    , mode = 'lines+markers'
    , name = col.replace("-percent","")
) for col in df.columns if "-volume" not in col]

plot(data, filename='test.html')

在此处输入图像描述

所以这里的具体问题是:如何将客户端音量添加到这个绘图工具提示中的文本中?

4

1 回答 1

3

好吧,我想我有你想要的。我必须将名称更改为client3-volumeto,client2-volume以便我可以从列表理解中获取一些逻辑。我在 Scatter 对象中创建了一个文本对象,并通过 hoverinfo 将 y 和文本传递到悬停模板中。如果您有一种更智能的方法可以从您的 df 中获取与客户百分比列关联的卷列,您可以将其更改text = ...为将向其发送您想要的数据的任何内容。

test_data = {"client1-percent":[90,100,60]
             , "client1-volume":[500000,3542,20000]
             , "client2-percent":[99,63,98]
             ,"client2-volume":[6423,6524,5737]
            }

df = pd.DataFrame(test_data)

data = [go.Scatter(
    x = df.index.values
    , y = df.loc[:,col].values
    , text = df[col.replace('-percent','-volume')].values
    , hoverinfo = 'y+text'
    , hovertemplate = "Percent: %{y:.1f}% | Volume: %{text}"
    , mode = 'lines+markers'
    , name = col.replace("-percent","")
) for col in df.columns if "-volume" not in col]

plot(data, filename='test.html')
于 2019-04-16T18:21:29.310 回答