Python Plotly:将dataframe列中特定的群集标签打印为标记

Python Plotly:将dataframe列中特定的群集标签打印为标记,python,python-3.x,pandas,dataframe,plotly,Python,Python 3.x,Pandas,Dataframe,Plotly,我试图在我的图表上的特定点上得到标记 我有以下数据框: Date avg avg_60MA pivot 2018-03-20 08:15:00 525.096667 NaN 0 2018-03-20 08:30:00 524.613333 NaN 0 2018-03-20 08:45:00 522.093333 NaN 0 2018-03-20 09:00:00 518.60000

我试图在我的图表上的特定点上得到标记

我有以下数据框:


Date                      avg     avg_60MA  pivot
2018-03-20 08:15:00     525.096667  NaN     0
2018-03-20 08:30:00     524.613333  NaN     0
2018-03-20 08:45:00     522.093333  NaN     0
2018-03-20 09:00:00     518.600000  NaN     2
2018-03-20 09:15:00     522.330000  NaN     2
2018-03-20 09:30:00     526.143333  NaN     1
2018-03-20 09:45:00     527.773333  NaN     0
2018-03-20 10:00:00     528.230000  NaN     0
2018-03-20 10:15:00     527.166667  NaN     0
2018-03-20 10:30:00     527.163333  NaN     2
我有以下带有plotly软件包的图表:

我之所以使用plotly,是因为我的数据框很难打印

trace0 = go.Scatter(x=test.index, y=test['avg'], name='avg', line=dict(color='lime'))
trace1 = go.Scatter(x=test.index, y=test['avg_60MA'], name='60MA', line=dict(color='grey'))

data = [trace0, trace1]
layout = dict(
            title='ETH',
              xaxis = dict(
        range = [min(test.index),max(test.index)]
              )
             )

fig = dict(data=data, layout=layout)
py.iplot(fig)
我希望在图表上以这些特定的价格显示“Pivot”一栏。列值为[0,1,2],我希望图表上只显示1和2

我将感谢任何帮助。 谢谢

在生成标记跟踪时,您可以使用它根据特定列值过滤数据帧,请参见下面的代码以获取示例

import pandas as pd
import plotly.graph_objects as go

df = pd.DataFrame([
 {'Date': '2018-03-20 08:15:00', 'avg': 525.096667,  'avg_60MA': 524.1, 'pivot': 1},
 {'Date': '2018-03-20 08:30:00', 'avg': 524.613333,  'avg_60MA': 523.6, 'pivot': 0},
 {'Date': '2018-03-20 08:45:00', 'avg': 522.093333,  'avg_60MA': 521.1, 'pivot': 0},
 {'Date': '2018-03-20 09:00:00', 'avg': 518.6,       'avg_60MA': 517.6, 'pivot': 2},
 {'Date': '2018-03-20 09:15:00', 'avg': 522.33,      'avg_60MA': 521.3, 'pivot': 0},
 {'Date': '2018-03-20 09:30:00', 'avg': 526.143333,  'avg_60MA': 525.2, 'pivot': 1},
 {'Date': '2018-03-20 09:45:00', 'avg': 527.773333,  'avg_60MA': 526.8, 'pivot': 0},
 {'Date': '2018-03-20 10:00:00', 'avg': 528.23,      'avg_60MA': 527.2, 'pivot': 2},
 {'Date': '2018-03-20 10:15:00', 'avg': 527.166667,  'avg_60MA': 526.2, 'pivot': 0},
 {'Date': '2018-03-20 10:30:00', 'avg': 527.163333,  'avg_60MA': 526.2, 'pivot': 0}]
)

df.index = pd.DatetimeIndex(df['Date'])
df.drop(labels='Date', axis=1, inplace=True)

layout = dict(title='ETH',
              plot_bgcolor='white',
              margin=dict(t=60, b=20, l=20, r=20),
              xaxis=dict(linecolor='gray', mirror=True, showgrid=False),
              yaxis=dict(linecolor='gray', mirror=True, showgrid=False))

data = []

data.append(go.Scatter(x=df.index,
                       y=df['avg'],
                       name='avg',
                       mode='lines',
                       line=dict(color='lime', width=1)))

data.append(go.Scatter(x=df.index,
                       y=df['avg_60MA'],
                       name='60MA',
                       mode='lines',
                       line=dict(color='grey', width=1)))

data.append(go.Scatter(x=df.query('pivot == 1').index,
                       y=df.query('pivot == 1')['avg'],
                       name='avg, pivot = 1',
                       mode='markers',
                       marker=dict(color='purple', size=8)))

data.append(go.Scatter(x=df.query('pivot == 2').index,
                       y=df.query('pivot == 2')['avg'],
                       name='avg, pivot = 2',
                       mode='markers',
                       marker=dict(color='orange', size=8)))

fig = go.Figure(data=data, layout=layout)

fig.show()

您可以尝试切换到
px.Scatter
(Plotly Express版本),然后修改
hover\u data
选项。看看这些。谢谢!!很好。