在 python 中绘制 3D 绘图
Posted
技术标签:
【中文标题】在 python 中绘制 3D 绘图【英文标题】:Plotly 3D plot in python 【发布时间】:2021-07-21 09:27:52 【问题描述】:我想在 python 中使用 plotly 制作 3D 绘图。实际上它是动画的第一步,但首先我需要知道如何创建它的 3D 散点图,如下所示,它是在 matplotlib 中制作的。 我有dataset,看起来像这样。
现在,我想根据提到的日期对其进行动画处理,但是我在 plotly 的官方网站上获得的代码是这样的,其中大多数是相似的。
import plotly.express as px
df = px.data.iris()
fig = px.scatter_3d(df, x='sepal_length', y='sepal_width', z='petal_width',
color='species')
fig.show()
现在,我不明白应该如何分配 X,Y and Z
来获得动画情节。因为我需要的所有 13 列都在针对日期的情节中。
作为参考,我发现了这个site 也就是说,
To get a 3D scatter plot you need to specify the trace as a plotly.graph_objs.Scatter3d object or as a dict with a type: 'scatter3d' key.
Feel free to share a full reproducible example if you’d like to work through more of the details.
但这还不够。
请帮我解决这个问题。正确代码或指导的链接对于如何设置变量以获得 3D 绘图动画非常有帮助。谢谢。
【问题讨论】:
【参考方案1】:为了更新 plotly 中的现有绘图,它们具有FigureWidget
接口。如果您可以在小部件工作的环境中操作(例如 Jupyter notebook),那么以下代码将重复更新现有绘图中的数据。
它不像动画那样很棒。如果在旋转视图时数据更新,它会猛拉回原始位置。所以这不是很好。但是,如果您对这些限制感到满意,那么这将使您入门。
import plotly.express as px
df = px.data.iris()
fig = px.scatter_3d(df, x='sepal_length', y='sepal_width', z='petal_width',
color='species')
import threading
import time
import numpy as np
fw = go.FigureWidget(fig)
def do():
while True:
fw.data[0]['x'] = np.random.rand(len(fw.data[0]['x']))
time.sleep(1)
t = threading.Thread(target=do)
t.start()
fw # run this in cell after which the plot will be generated.
这就是它的外观。请注意旋转视图期间不幸的跳跃。
【讨论】:
我没有使用虹膜集。请在上面提到数据 我认为数据集不是你的问题,而是采取什么方法。我回答了你可以使用什么方法。 另外,如果这就是你想要的,你的问题非常不清楚......请让你的问题更清楚。 我为此向@William 道歉。你的方法确实很有帮助。但是,如果您在数据的屏幕截图中看到,我需要 134 列与日期对应的 3D 列。请帮助我,因为我无法找到正确的代码或指导如何做到这一点。真的很有帮助。谢谢 它需要是体积视频是没有意义的。如果数据不是 3 维的,那么将其设为“体积”不会显示任何信息。以上是关于在 python 中绘制 3D 绘图的主要内容,如果未能解决你的问题,请参考以下文章