【问题标题】:Setting custom tooltip on 3d surface plot in plotly python在plotly python中的3d曲面图上设置自定义工具提示
【发布时间】:2022-01-01 22:00:08
【问题描述】:

我一直在尝试在 3d 曲面图上设置自定义工具提示,但无法弄清楚。我可以做一些非常简单的事情,比如让每个点的工具提示都相同,但是当没有绘制字段时,我无法在工具提示中为每个点设置不同的值。

在我的示例中,我有一个包含 53 行(周)和 7 列(一周中的几天)的数据集,通过在 Z 参数中传递数据框,我在 3d 曲面图上绘制图形。这是一年的数据,所以每一天都有自己的数字值被绘制出来。我正在尝试用实际日期标记每个点(因此自定义工具提示,因为我没有将日期本身传递给图表),但似乎无法正确对齐工具提示值。

我尝试了一个简单的示例来创建一个与数据框形状相同的“工具提示数组”,但是当我通过使用重复的单词测试我是否得到正确的形状时,我得到了一个更奇怪的错误使用单词中的字符值作为工具提示(例如 c 或 _)。有没有人有任何想法或建议?我可以发布更多代码,但尝试使用更简单的示例来复制我的错误。

labels=np.array([['test_label']*7]*53)
fig = go.Figure(data=[
    go.Surface(z=Z, text=labels, hoverinfo='text'
              )],)
fig.show()

【问题讨论】:

    标签: python plotly-python


    【解决方案1】:

    我们创建了与图片中提供的数据类似的示例数据。我为连续一年的日期创建了一个随机生成值的数据框,添加了周数和天数,并将其形成为 Z 数据。我还添加了一个仅限日期的数据列。因此,您的代码将使悬停文本显示日期。

    import numpy as np
    import plotly.graph_objects as go
    import pandas as pd
    
    df = pd.DataFrame({'date':pd.to_datetime(pd.date_range('2021-01-01','2021-12-31',freq='1d')),'value':np.random.rand(365)})
    
    df['day_of_week'] = df['date'].dt.weekday
    df['week'] = df['date'].dt.isocalendar().week
    df['date2'] = df['date'].dt.date
    Z = df[['week','day_of_week','value']].pivot(index='week', columns='day_of_week')
    labels = df[['week','day_of_week','date2']].pivot(index='week', columns='day_of_week').fillna('')
    
    fig = go.Figure(data=[
        go.Surface(z=Z,
                   text=labels,
                   hoverinfo='text'
                  )]
                   )
    fig.update_layout(autosize=False, width=800, height=600)
    fig.show()
    

    【讨论】:

    • 如果我的回答对你有帮助,请考虑采纳为正确答案
    猜你喜欢
    • 2021-12-06
    • 2015-08-05
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多