在 Plotly 中单击鼠标后绘制 x 值

问题描述 投票:0回答:1

我想创建一个蜡烛模拟器,在事件(鼠标单击或计时器)之后绘制下一个值。

不要显示整个图,而是根据需要取消下一个值的阴影(也称为附加新值)。

  1. 交互式绘图允许与不同的绘图进行交互。

  2. 交互式鼠标单击给出鼠标位置的坐标。 这不是想要的结果

我尝试更新图表,添加下一个值并再次

plot.show()
,这会创建一个新图表(窗口)。

这应该适用于任何图表,但以带有 ema 指标的 ohlc 为例:

import plotly.graph_objects as go
import pandas as pd
import plotly.express as px

df2 =df(0) 
fig = go.Figure()  
fig.add_trace(go.Ohlc(x=df2.index, open=df2['Open'], high=df2['High'], low=df2['Low'], close=df2['Close'],name='plot1'))
fig.add_trace(go.Scatter(x=df2.index, y=df2['ema13'],opacity=0.7, line=dict(color='blue', width=2),name='plot2'))
fig.update_layout(xaxis_rangeslider_visible=False)
fig.show()
for i in len(df):
    input("Press enter to continue")
    df2.append(df(i))
    fig.update_traces(x=df2.index, open=df2['Open'], high=df2['High'], low=df2['Low'], close=df2['Close'],name='plot1')
    fig.update_traces(x=df2.index, y=df2['ema13'],opacity=0.7, line=dict(color='blue', width=2),name='plot2')
    fig.show()'
plotly python-interactive
1个回答
0
投票

您提到您尝试更新图表。为了改进问题,请分享一个最小的可重现示例(包括虚拟数据),以便我们可以评估您需要多少额外信息。

解决方案在于定义一个更新事件并更改fig.data。将此函数连接到 Python 上的 onclick 或计时器。此代码从第一个数据点开始。然后您需要单击图表(任何数据点)来添加下一个。

import plotly.graph_objects as go
import pandas as pd

fig = go.FigureWidget()

ix_max = 1

df = pd.DataFrame({'x':[1, 2, 3], 'y':[10, 11, 12]})

fig.add_trace(go.Scatter(x=df['x'][:ix_max],
                         y=df['y'][:ix_max],
                         name='trace1'))

def update_graph(trace, points, state):

    global ix_max

    ix_max += 1

    with fig.batch_update():

        fig.update_traces(
            x=df['x'][:ix_max],
            y=df['y'][:ix_max],
            selector=dict(name='trace1'))  # this changes x and y of the trace named here. Otherwise all traces are affected

# This next part makes sure it works regardless of which trace is on top
for i in range(len(fig.data)):
    f = fig.data[i]
    f.on_click(update_graph)

fig
© www.soinside.com 2019 - 2024. All rights reserved.