使用plotly在Python中进行3D表面绘图

时间:2020-06-25 08:25:30

标签: python plotly plotly-dash plotly-python

我有一个关于绘图表面代码如何工作的问题。

我已经从数据框中获取了数据,以绘制曲面3D图,x,y和z的一维数组

示例:

x (temperatures) =      [26,25,24,29,21,20,21,21,26]

y (humidity)     =      [50,60,50,40,50,70,80,90,90]

z (power consumption) = [12,13,14,11,11,10,11,12,15]

我需要绘制每个点(例如:x1,y1,z1)作为一个表面,并且我已经使用了这段代码

import plotly.graph_objects as go
import numpy as np

#x,y,z from above

fig = go.Figure(data = go.Surface(z=z,
                                  x=x,
                                  y=y))

fig.update_traces(contours_z = dict(show = True , usecolormap = True ,
                                    highlightcolor = 'limegreen' , project_z = True))

fig.update_layout(title = 'Linear')

fig.show()

但是它什么也没显示。

(我也知道z需要是2D数组,但我不知道为什么是这样)

如何解决此问题?

谢谢

1 个答案:

答案 0 :(得分:1)

我的答案包括两个部分:

  • 如何在3d中绘制此数据。
  • 创建3d表面图需要些什么。

以3D绘制数据

利用您拥有的数据-x,y和z的三个向量,您可以轻松创建3D散点图:

fig = go.Figure(data=[go.Scatter3d(x=x, y=y, z=z,
                                   mode='markers')])

fig.show()

这是它的外观,您可以旋转它并向各个方向旋转它。

enter image description here

3D表面图

要创建3D表面图,您需要为a和y的每个组合指定一个z值。将表面图视为地图。对于地图上的每个点(x,y),您都需要提供该点的海拔高度(z),以便以绘图方式创建您要寻找的表面。