我是 Python 初学者,正在为工作中的一项任务尝试数据可视化。简而言之,我需要可视化 3D 数据点云,我认为等值面函数最符合我的期望。我有三个不同的数据集,描述机翼周围的特定流动剖面,仅通过分辨率来区分。
我的问题是;下面的代码仅适用于最低分辨率,如标题所示,适用于其他两个更大(中、高)分辨率的数据集代码,既不显示错误代码,也不提供可交互的图形输出:
import pandas as pd
import plotly.graph_objects as go
import plotly.io as pio
pio.renderers.default="browser"
file_name = "folder_path/dataset.dat"
df = pd.read_csv(filepath_or_buffer=file_name, skiprows = 2, sep = " ", header = None, names = ["x", "y", "z", "I"])
x = df["x"]
y = df["y"]
z = df["z"]
I = df["I"]
fig = go.Figure(data = go.Isosurface(x = x, y = y, z = z, value = I,
isomin = 0,
isomax = 0.99,
surface_count = 10,
colorbar_nticks = 10,
surface_fill=0.4,
colorscale = 'Blackbody'))
fig.show()
数据集是一个非常简单的 ascii 文件,有 4 列。最低分辨率为 97920 行,中等分辨率为 498883 行,最高分辨率为 2883836 行。
为了进一步提供详细信息,我附上了两张图,其中一张是从最低分辨率数据集成功输出的;
另一个是中型数据集没有错误消息的结果:
有人可以向我解释这怎么可能吗?本质上我该如何解决这个问题?
附言:
我尝试了除 html 数据(即浏览器选项)之外的输出格式,例如 png,结果完全相同。
我还尝试在 Spyder 和 Jupyter Lab 等不同平台上运行它,但都给出相同的结果。
第二次编辑 - 15.07.2024:我还尝试了 Volume() 函数而不是 Isosurfaces() 函数;结果还是一样...
好吧,经过长时间的艰苦研究,我发现了另一个使用 scatter_3d 函数的示例,其中当与大量数据集一起使用时,它不会再次绘制。以下是该特定帖子的链接:
显然必须使用更强大的可视化库才能使用 python 显示大型数据集!