我想创建一个蜡烛模拟器,在事件(鼠标单击或计时器)之后绘制下一个值。
不要显示整个图,而是根据需要取消下一个值的阴影(也称为附加新值)。
交互式绘图允许与不同的绘图进行交互。
交互式鼠标单击给出鼠标位置的坐标。 这不是想要的结果
我尝试更新图表,添加下一个值并再次
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()'
您提到您尝试更新图表。为了改进问题,请分享一个最小的可重现示例(包括虚拟数据),以便我们可以评估您需要多少额外信息。
解决方案在于定义一个更新事件并更改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