akk*_*akk 5 3d wolfram-mathematica list
我有一个 (ixj) 大小的矩阵mat,其中包含实验中的值。
如果我使用,ListPlot3D[mat] 我可以在 3D 图中可视化它。
我还有两个大小为 i ( aRow) 和大小 j ( aCol) 的数组,这是我通过实验确定的。
如何用 和 替换显示的默认 x 和ListPlot3D[mat]yaRow轴aCol?
请查看该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)