JDS*_*JDS 6 python plotly-python
我正在基于 pandas 数据框创建 3D 散点图,然后每当用户按下程序中的按钮时,我想用稍微更新的数据重新绘制它。我几乎可以使用此功能,除了更新的图形是通过新打开的选项卡绘制的,而实际上我只想更新我的原始现有图形。
这是我的代码。首先,我使用数据的“版本 1”初始化绘图,然后设置一个简单的 while 循环来等待用户请求更新。然后理想情况下,一旦他们输入要求更新的内容,我只需在打开的同一个选项卡中重新绘制所有内容。但会打开一个新选项卡(至少会正确地重新绘制数据)。
fig = go.Figure(data=[go.Scatter3d(x=df['x'],y=df['y'],z=df['z'],mode='markers', marker=dict(
size=4,
color=df['y'], # set color to an array/list of desired values
colorscale='Viridis', # choose a colorscale
opacity=0.3
))])
# Column max and mins for plotting:
xmax = df_1.max(axis=0)['x']; xmin = df_1.min(axis=0)['x']
ymax = df_1.max(axis=0)['y']; ymin = df_1.min(axis=0)['y']
zmax = df_1.max(axis=0)['z']; zmin = df_1.min(axis=0)['z']
fig.update_layout(
scene = dict(xaxis = dict(nticks=4, range=[xmin,xmax],),
yaxis = dict(nticks=4, range=[ymin,ymax],),
zaxis = dict(nticks=4, range=[zmin,zmax],),))
f2 = go.FigureWidget(fig)
f2.show()
#fig.show()
while True:
choice = input("> ")
choice = choice.lower() #Convert input to "lowercase"
if choice == 'exit':
print("Good bye.")
break
if choice == 'w':
print("W, moving forward")
cube_origin = cube_origin + np.array([0.1,0,0])
df_cube = createCubeMesh(cube_size, cube_density, cube_origin)
new_df = df_scene_orig.copy()
new_df = new_df.append(df_cube)
fig = go.Figure(data=[go.Scatter3d(x=new_df['x'],y=new_df['y'],z=new_df['z'],mode='markers', marker=dict(
size=4,
color=new_df['y'], # set color to an array/list of desired values
colorscale='Viridis', # choose a colorscale
opacity=0.3
))])
f2 = go.FigureWidget(fig)
f2.show()
Run Code Online (Sandbox Code Playgroud)
我的代码基于另一个据说使用的答案go.FigureWidget(fig),但它似乎没有按预期工作。
我不想f2.show()在最后使用,而是想要一个类似于f2.update()重绘的简单的东西。
| 归档时间: |
|
| 查看次数: |
4995 次 |
| 最近记录: |