【问题标题】:3D surface plot never shows any data3D 曲面图从不显示任何数据
【发布时间】:2019-04-13 20:14:23
【问题描述】:

plotly 中的 3D 曲面图从不显示数据,我得到了图显示,但图中没有任何显示,就好像我绘制了一个空的数据框。

起初,我尝试了类似于我在此处找到的解决方案 (Plotly Plot surface 3D not displayed),但得到了相同的结果,另一个没有数据的绘图。

df3 = pd.DataFrame({'x':[1, 2, 3, 4, 5],'y':[10, 20, 30, 40, 50],'z': [5, 4, 3, 2, 1]})
iplot(dict(data=[Surface(x=df3['x'], y=df3['y'], z=df3['z'])]))

所以我尝试了 plotly 网站上的代码(此笔记本的第一个单元格:https://plot.ly/python/3d-scatter-plots/),就像它在那里一样,只是为了看看他们的示例是否有效,但我得到了一个错误。

我得到了这个:

https://lh3.googleusercontent.com/sOxRsIDLVkBGKTksUfVqm3HtaSQAN_ybQq2HLA-aclzEU-9ekmvd1ETdfsswC2SdbysizOI=s151

但我应该得到这个:

https://lh3.googleusercontent.com/5Hy2Z-97_vwd3ftKBA6dYZfikJHnA-UMEjd3PHvEvdBzw2m2zeEHBtneLC1jzO3RmE2lyw=s151

观察:由于缺乏声誉,无法发布图片。

【问题讨论】:

  • 您使用的是哪个iplot?你在笔记本环境中吗?

标签: python plotly


【解决方案1】:

为了绘制曲面,您必须为每个点提供一个值。在这种情况下,您的xy 是一系列大小5,这意味着您的z 应该具有(5, 5) 的形状。

如果我有更多信息,我可以为您提供更多详细信息,但对于一个最小的工作示例,请尝试将 (5, 5) 数据帧、numpy 数组甚至列表列表传递给 z 数据值。

编辑:

在笔记本环境中,以下代码适用于我:

from plotly import offline
from plotly import graph_objs as go
offline.init_notebook_mode(connected=False)

df3 = {'x':[1, 2, 3, 4, 5],'y':[10, 20, 30, 40, 50],'z': [[5, 4, 3, 2, 1]]*5}
offline.iplot(dict(data=[go.Surface(x=df3['x'], y=df3['y'], z=df3['z'])]))

如图所示:

我正在使用 plotly 3.7.0。

【讨论】:

  • 即使 z 具有 (5, 5) 形状,它仍然会输出一个空图形:df3 = pd.DataFrame({'x':[1, 2, 3, 4, 5],'y':[10, 20, 30, 20, 10],'z': [[5, 4, 3, 2, 1]] * 5}) iplot(dict(data=[Surface(x=df3['x'], y=df3['y'], z=df3['z'])])) 我还尝试创建一个单独的 z 变量以在绘图中使用:df3 = pd.DataFrame({'x':[1, 2, 3, 4, 5],'y':[10, 20, 30, 20, 10],'z': [[5, 4, 3, 2, 1]] * 5}) z = [[5, 4, 3, 2, 1]] * 5 iplot(dict(data=[Surface(x=df3['x'], y=df3['y'], z=z)])) 我也尝试为变量 z 使用许多其他类型的数据,例如 numpy 数组、Series。
  • 是的,我在笔记本环境中。
  • 用笔记本代码版本编辑过,如果还是不行,那一定是安装中的问题,尝试重新安装plotly或类似的东西。
猜你喜欢
  • 2015-06-15
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多