Можно ли изменить масштаб изображения по оси X / Y в R с помощью rayhader? - PullRequest
2 голосов
/ 04 октября 2019

У меня есть некоторые данные из лабораторного оборудования, которые могут быть представлены в виде матрицы контурным графиком / тепловой картой.

Я хотел бы попытаться проиллюстрировать эти данные в R с помощью пакета rayshader.

Моя проблема в том, что данные не квадратные, матрица состоит из 33 строк и 48003 столбцов. Когда я строю это с помощью rayshader, я получаю тонкую линию:

library(dplyr)
library(rayshader)

set.seed(1742)
df <- matrix(rnorm(10000), nrow = 10)
rownames(df) <- 1:10
colnames(df) <- seq(0.01, 10, 0.01)

df %>%
  sphere_shade(texture = "desert") %>%
  plot_map()

Есть ли способ заставить rayshader изобразить это как квадрат, манипулируя соотношением сторон x / y? Или построить их в эквивалентном масштабе (одно измерение собирает данные намного быстрее, чем другое)? Я ничего не могу найти в документах.

В этом примере я попытался присвоить имена строкам и столбцам, чтобы они были собраны в течение 10 минут, но это не изменило результат.

Конечный результат должен выглядеть примерно так:

library(plotly)

set.seed(1742)
plot_ly(z = ~matrix(rnorm(10000), nrow = 10)) %>%
  add_surface()

enter image description here

Большое спасибо.

1 Ответ

1 голос
/ 28 октября 2019

Решение для rayshader::plot_3d() заключается в использовании scale = c(x, y, z), который изменит соотношение сторон x / y / z. Это было скрыто, но не потребовалось столько времени, чтобы найти ответ. Это настройка в rgl::par3d(), которая вызывается plot_3d().

Однако я не смог заставить plot_map() работать. Когда я попытался добавить аргумент asp = 1, который используется rgl::par3d(), он выдал ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...