意外地从R"图像"功能转换了翻转输出

dan*_*kas 4 transpose r image matrix

说我有一个矩阵:

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
Run Code Online (Sandbox Code Playgroud)

现在,当我这样做

image(m)
Run Code Online (Sandbox Code Playgroud)

我得到了意外的输出.所以我需要这样做:

image(t(m)[,4:1])
Run Code Online (Sandbox Code Playgroud)

让它成为"正确"的方式.有什么意义?

Sac*_*amp 6

从帮助文件:

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


Gre*_*now 6

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

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

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