4

假设我有一个矩阵:

m<-matrix(1:5,4,5)
m
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    4    3    2
[2,]    2    1    5    4    3
[3,]    3    2    1    5    4
[4,]    4    3    2    1    5

现在,当我这样做时

image(m)

我得到了意想不到的输出。所以我需要做:

image(t(m)[,4:1])

以“正确”的方式获得它。重点是什么?

4

2 回答 2

6

从帮助文件:

请注意,图像将 z 矩阵解释为 f(x[i], y[j]) 值的表,因此 x 轴对应于行号,y 轴对应于列号,底部为第 1 列,即矩阵的传统印刷布局逆时针旋转 90 度。

于 2012-04-12T13:19:48.393 回答
6

其他人指出,您所看到的与文档一致,这里有一些关于它为什么这样做的想法。

image 函数最初不是为了绘制图像/图形而设计的,而是以图形方式表示表格信息,因此事物的顺序旨在与其他图形理想保持一致,而不是确保剪贴画看起来正确。这意味着图像的旋转和镜像不会使其“错误”,它只是一个不同的视图,并且选择了遵循绘图规则的视图。

它还试图与其他图形功能及其所基于的理念保持一致。对于散点图,我们使用plot(x,y)withx作为水平轴,但是当我们这样做时table(x,y)x变量会形成结果表的行。这两个事实都符合惯例(解释变量通常是表中的行变量,因为数字更容易垂直比较)。所以图像函数使用矩阵的行(x 变量,如果它来自表函数)作为水平轴上的预测变量/解释变量。绘图中的值也习惯于从左到右和从下到上增加(但在表格中更常见的是从上到下增加)。

于 2012-04-12T18:42:37.607 回答