繁体   English   中英

在 Ploty (Python) 中绘制 3D 曲面图被拉伸/变形

[英]Plotting a 3D surface plot in Ploty (Python) is stretched / deformed

我正在 Plotly 中绘制一个二维函数。 我正在经历情节被延伸到高度。 (见下图)。 在布局中,我已经更改了高度和宽度的值,但对其没有影响。

那是我的代码:

import plotly.graph_objects as go
import numpy as np


x_test_d1 = np.linspace(-4,4,100)
x_test_d2 = np.linspace(-3,3,100)


grid_d1, grid_d2 = np.meshgrid(x_test_d1,x_test_d2)

z = 1.5*np.sin(grid_d1) - 0.1*(grid_d1-3)**2 +10 - 0.5*(grid_d2**2-2) + np.sin(grid_d2)*2


fig = go.Figure(data=[go.Surface(x=grid_d1, y=grid_d2, z=z)])
fig.update_layout(margin=dict(l=20, r=20, t=20, b=20),
    width=800, height=400)

fig.show()

这就是结果图:

结果图被拉伸太多:D

感谢您的任何帮助! :)

根据文档,您可以在此处找到

宽度
代码: fig.update_layout(width=)
类型:大于等于10的数字
默认值:700
设置绘图的宽度(以 px 为单位)。

有点违反直觉,设置 webview/窗口图的大小显示在中,但不影响图的大小。

经过一番挖掘,我找到了解决方案,您可能会对这里感兴趣

fig.update_layout(scene_aspectmode='cube')

完整片段如下所示:

import plotly.graph_objects as go
import numpy as np


x_test_d1 = np.linspace(-4, 4, 100)
x_test_d2 = np.linspace(-3, 3, 100)


grid_d1, grid_d2 = np.meshgrid(x_test_d1, x_test_d2)

z = (
    1.5 * np.sin(grid_d1)
    - 0.1 * (grid_d1 - 3) ** 2
    + 10
    - 0.5 * (grid_d2**2 - 2)
    + np.sin(grid_d2) * 2
)


fig = go.Figure(data=[go.Surface(x=x_test_d1, y=x_test_d2, z=z)])
fig.update_layout(margin=dict(l=20, r=20, t=20, b=20), scene_aspectmode="cube")

fig.show()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM