Python 从plotly 3d图形中获取相机位置

Python 从plotly 3d图形中获取相机位置,python,3d,plotly,Python,3d,Plotly,我正在绘制plotly 3D图形,希望调整相机位置。对我来说,最好的方法是使用查看器,根据需要缩放和旋转场景,然后将相机位置作为JSON抓取,并将其放入生成图片的脚本中,默认情况下达到相同的位置 据我所知,它应该是有效的,但它没有 我的代码是: from plotly.graph_objs import Scatter3d, Layout, Scene from plotly.offline import iplot import plotly from numpy import sin, co

我正在绘制plotly 3D图形,希望调整相机位置。对我来说,最好的方法是使用查看器,根据需要缩放和旋转场景,然后将相机位置作为JSON抓取,并将其放入生成图片的脚本中,默认情况下达到相同的位置

据我所知,它应该是有效的,但它没有

我的代码是:

from plotly.graph_objs import Scatter3d, Layout, Scene
from plotly.offline import iplot
import plotly
from numpy import sin, cos, linspace, pi, zeros_like

plotly.offline.init_notebook_mode()

t = linspace(0, 4*pi)

trace1 = Scatter3d(
    x = t,
    y = cos(t),
    z = sin(t),
    mode = 'lines'
)

layout = Layout(
                width = 600, 
                height = 600, 
                scene = Scene(
                    xaxis = {'title': 't'},
                    yaxis = {'title': 'x'},
                    zaxis = {'title': 'y'},
                    camera =
                      {'eye':{'x':0,'y':1,'z':0}, 
                       'up': {'x':0,'y':0,'z':1}, 
                       'center': {'x':0,'y':0,'z':0}}
                )
)
iplot(dict(data=[trace1], layout=layout))
然后我得到一张照片:

单击“在云中保存和编辑”,切换到plotly界面,调整相机位置并单击View JSON,仍然可以获得我在布局中指定的默认相机位置


以下是Plotly的3d绘图相机控件示例的完整说明:

为了完整起见,这里有一个简短的总结:

可以使用
camera
而不是
cameraposition
,因为它似乎有更简单的解释

摄像机位置由三个矢量确定:
向上
中心
眼睛

上方向向量确定页面上的上方向。默认值为
(x=0,y=0,z=1)
,即z轴指向上

中心向量确定围绕场景中心的平移。默认情况下,没有平移:中心向量是
(x=0,y=0,z=0)

眼睛矢量确定关于原点的摄影机视点。默认值为
(x=1.25,y=1.25,z=1.25)

也可以通过减少眼睛向量的范数来放大

name = 'eye = (x:0.1, y:0.1, z:1)'
camera = dict(
    up=dict(x=0, y=0, z=1),
    center=dict(x=0, y=0, z=0),
    eye=dict(x=0.1, y=0.1, z=1)
)
fig = make_fig(camera, name)
py.iplot(fig, validate=False, filename=name)

这是预期的行为


plotly.js在将相机位置发送到plot.ly云之前不会保存相机位置。您需要将图形保存在的plotly工作区中,以更新其
相机属性。

这是预期的行为。plotly.js在将相机位置发送到plot.ly云之前不会保存相机位置。您需要将图形保存在plot.ly/plot/上,以更新其
camera
属性。@etpinard,谢谢!现在我看到,如果我在plot.ly web界面中保存我的绘图,然后调整相机,然后再次保存,我将在JSON预览中获得正确的相机值。你能从这个评论中做出一个回答,让我接受它吗?那么如何通过onClick事件获得相机位置呢?这并不能回答问题。这可以设置初始位置,但问题是如何在与鼠标交互后获得新的相机位置。