Mathematica 3D 绘图,其中 x 轴和 y 轴坐标位于单独的列表中

akk*_*akk 5 3d wolfram-mathematica list

我有一个 (ixj) 大小的矩阵mat,其中包含实验中的值。

如果我使用,ListPlot3D[mat] 我可以在 3D 图中可视化它。

我还有两个大小为 i ( aRow) 和大小 j ( aCol) 的数组,这是我通过实验确定的。

如何用 和 替换显示的默认 x 和ListPlot3D[mat]yaRowaCol

Sza*_*lcs 3

请查看该Ticks选项及其在文档中使用的示例。


这是一种方法。首先生成一些示例数据:

mat = Table[Exp[-(x^2 + y^2)], {x, -2, 2, .1}, {y, -2, 2, .1}];    
aCol = aRow = Round[mat[[20]], 0.01];
Run Code Online (Sandbox Code Playgroud)

以 3D 形式绘制它。我选择显示所有可能的每 10 个刻度线。 list[[;; ;; 10]]选择列表中的每 10 个元素。

ListPlot3D[mat,
 Ticks -> {
   Transpose[{Range@Length[aRow], aRow}][[;; ;; 10]],
   Transpose[{Range@Length[aCol], aCol}][[;; ;; 10]],
   Automatic}]
Run Code Online (Sandbox Code Playgroud)

数学图形

也以 2D 形式绘制它。ListDensityPlot默认情况下有一个Frame(不是Axes),所以我们使用FrameTicks

ListDensityPlot[mat,
 FrameTicks -> {
   Transpose[{Range@Length[aRow], aRow}][[;; ;; 10]],
   Transpose[{Range@Length[aCol], aCol}][[;; ;; 10]],
   None, None},
 Mesh -> Automatic]
Run Code Online (Sandbox Code Playgroud)

数学图形


更新

如果您不需要任意刻度,只需要通常的线性间隔刻度线的不同范围,那么您可以使用DataRange如下选项:

ListPlot3D[mat, DataRange -> {{0, 1}, {0, 1}}]
Run Code Online (Sandbox Code Playgroud)

数学图形

如果您仍然需要某种格式的数据{x,y,z}(因为坐标不是均匀分布的),您可以使用

Join @@ MapThread[Append, {Outer[List, aRow, aCol], mat}, 2]
Run Code Online (Sandbox Code Playgroud)