Вопрос по r, image, matrix – Неожиданно транспонированный перевернутый вывод из функции R «изображение»

4

Скажем, у меня есть матрица:

<code>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
</code>

Теперь, когда я делаю

<code>image(m)
</code>

Я получаю неожиданный вывод. И так мне нужно сделать:

<code>image(t(m)[,4:1])
</code>

чтобы получить это "правильно" путь. Какой смысл?

Это верно. Но все же я бы ожидал обычное печатное расположение выходных данных матрицы в качестве поведения по умолчанию. Просто любопытно, почему это так закодировано. danas.zuokas
Потому что это имело смысл для тех, кто писал код изначально, вероятно. & Quot; очевидна & quot; поведение по умолчанию может сильно отличаться для разных людей. joran
Вывод не должен быть неожиданным: от?image:> Обратите внимание, что изображение интерпретирует матрицу z как таблицу значений f (x [i], y [j]), так что ось x соответствует номеру строки, а ось y - номеру столбца, причем столбец 1 находится на снизу, то есть поворот на 90 градусов против часовой стрелки обычного печатного макета матрицы. BenBarnes
Я не вижу полной согласованности между разными языками (ни через пакеты R, которые изображают подобные изображения) в ориентациях оси. Я должен жить и учиться :-( Carl Witthoft
Хотяimage(matrix) кажется, делает то, что мы хотим для простых случаев, у него так много ошибок и проблем с удобством использования, что если вы делаете что-то нетривиальное, вы очень быстро найдетеmelt а такжеggplot/geom_tile/geom_raster идиома - единственный способ оставаться в здравом уме. (Примеры: метки осей, расположение и т. Д.) smci

Ваш Ответ

2   ответа
6

что то, что вы видите, соответствует документации, вот пара мыслей о том, почему это происходит именно так.

Функция изображения изначально не была предназначена для построения графиков / изображений, но для графического представления табличной информации, поэтому порядок вещей должен был соответствовать другим идеалам графики, а не быть уверенным, что клипарт выглядит правильно. Это означает, что поворот и зеркальное отображение изображения не делают его «неправильным», это просто другое представление, и было выбрано представление, которое следовало правилам построения.

Он также пытался соответствовать другим графическим функциям и философии, на которой они основывались. Для точечного графика мы используемplot(x,y) сx будучи горизонтальной осью, но когда мы делаемtable(x,y) x Переменная формирует строки в результирующей таблице. Оба эти факта согласуются с обычной практикой (объясняющая переменная, как правило, является переменной строки в таблице, поскольку числа легче сравнивать по вертикали). Таким образом, функция изображения использует строки матрицы (переменную x, если она появилась из табличной функции) в качестве предиктора / пояснительной переменной на горизонтальной оси. Также обычно значения в графиках увеличиваются при движении слева направо и снизу вверх (но в таблицах чаще встречается увеличение сверху вниз).

6

Notice that image interprets the z matrix as a table of f(x[i], y[j]) values, so that the x axis corresponds to row number and the y axis to column number, with column 1 at the bottom, i.e. a 90 degree counter-clockwise rotation of the conventional printed layout of a matrix.

Похожие вопросы