【问题标题】:Plotting datasets with same shape (numpy shape) but different physical size and position绘制具有相同形状(numpy 形状)但物理大小和位置不同的数据集
【发布时间】:2016-05-07 20:38:29
【问题描述】:

我正在尝试使用 Mayavi 或 matplotlib 可视化天体物理学模拟。我得到了很多文件,这些文件都包含具有 (25,25,25) 索引的数据立方体。它们代表一颗行星(或行星的形成)并且具有物理位置和不同的物理尺寸。有没有办法缩放数据集,比如将它们添加到可以根据物理尺寸缩放并根据它们的位置放置的图中?

Fx:我有一个数据集,由地球上坐标 (178, 178, 178) 的维度 25*25*25 索引组成,数据集表示物理尺寸 (0.62, 0.62, 0.62)。另一个数据集也具有来自 kooordinate (6, 6, 6) 和大小 (0.11, 0.11, 0.11) 的 25*25*25 索引。如何将它们添加到一个数组(或绘图)中,以便根据它们的物理位置和大小进行缩放?

【问题讨论】:

  • 一般来说,您可以选择一个共同的空间尺度(例如,它可能与您最精细采样的数据集相同),然后使用某种形式的将其他数据集上采样到相同的尺度插值(见scipy.interpolatescipy.ndimage.interpolation)。我不清楚“将它们添加到一个数组”是什么意思 - 你真的想计算它们的总和,还是你的意思是更复杂的东西?你提到了绘图,但你没有描述你想要制作什么样的情节。
  • 将它们添加到一个数组中,意味着所有数据集由 25*25*25 个 numpy 数组组成,并添加到一个大数组中然后绘制。有没有一种方法可以一次将一个数据集添加到绘图中,然后对其进行缩放?我使用的绘图是 mayavi quiver3d、体积或流线型,但我看不出我制作哪个绘图有多重要。
  • 仍然不清楚你所说的“添加”是什么意思 - 你的意思是大数组中的值应该是小数组中值的 sums,还是您的意思是以其他方式组合它们?
  • 我之所以问你想制作什么样的情节是因为你用visualizationmatplotlibmayavi(!)标记了你的问题,加上你的情节类型想要制作将确定您需要的数据格式。 mayavi.mlab 中的 contour3Dquiver3dflow 绘图函数都接受 x, y, z 坐标向量,所以你不能根据子阵列的物理尺寸和位置来缩放和偏移这些吗?
  • 通过添加我的意思是把它们放到一个数组中,而不是总和,是的更复杂的东西。我使用了 flow 和 quiver3d。在那些我有 3 个矩阵,其中包含 x、y 和 z 值并绘制它们。但是坐标是由对我不起作用的数组的索引确定的,因为所有索引都被平等对待。

标签: python numpy matplotlib visualization mayavi


【解决方案1】:

现在很确定你的问题了。如果我错了,请告诉我。我的理解是你有很多文件,你想将所有文件按行星大小或位置绘制成一个图?

您或许可以使用 glob 和 pandas 数据框加载多个文件:

import os
import pandas as pd
from path import path

document = []
p = path("C:\Users\....")  #your data path
for f in p.files(pattern='*.csv'):  # loop thourgh all files depends on your file type
    with open (f) as file:
        data = file.read()
        document.append(data)
df = pd.DataFrame(document)

然后您可以按大小和位置对数据框中的数据进行排序:

df.sort(column='size',ascending=True)

希望这会有所帮助。

【讨论】:

  • 我已经编辑了我的问题,希望它会更清楚:)
  • 我明白了。也许您可以使用:df1 = pd.read_csv('your_file_1.csv') 并使用all_data = pd.append(df1,df2,df3.....) 附加每个文件,以便我们将合并到相同的数据帧。然后就可以排序 all_data
  • 这不是我要找的。我不需要对数据进行排序。现在我正在根据其位置绘制数据。外汇。如果有 10 个不同的坐标位置,那么最小的位置在第一行,第二个位置在第二个,以此类推。但它并没有真正起作用,因为物理位置间隔不均匀,物理大小也不同。希望这是有道理的。
猜你喜欢
  • 1970-01-01
  • 2023-04-10
  • 2020-05-06
  • 2019-05-24
  • 1970-01-01
  • 2022-12-07
  • 1970-01-01
  • 2017-01-06
  • 2018-09-19
相关资源
最近更新 更多