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
选项。看看这些。谢谢!!很好。