Используя persp3D или plot3D с данными в столбцах и рассчитайте позиции NA - PullRequest
0 голосов
/ 27 декабря 2018

Я хочу использовать функции plot3D или persp3D из пакета rgl и уже изучил описание пакета и набор фиктивных данных "Вулкан".Но я на самом деле не могу сделать следующее с моими данными:

У меня есть некоторые данные, перечисленные в 3 столбцах, как

Col1 Col2 Col3
1    0.2   2 
2    0.5   5
3    0.6   9
4    19    8
5    1.3   10
6    0.1   60

, и я хотел создать поверхностный график в 3D сpersp3D или plot3D.Конечно, у меня есть больше данных, но я не могу перечислить их здесь.Как я видел на графике вулканов (и, если мои предложения верны), данные вулканов содержат данные, упорядоченные в виде матрицы.
Поэтому я подумал, что для начала я бы хотел установить свои данные в виде матрицы, такой как:

 2   5   9   8   10   
 60  1 0.2  NA   NA  
 NA  2  NA 0.5   NA
  3  NA  NA  0.6
  4  NA  NA  NA  19    

и так далее

5
6

Конечно, я видел, что Матрица Данных из Вулкана завершена, и у меня есть много NA.Есть ли возможность рассчитать NA с на основе модели между уже измеренными значениями?Я думаю, что достоверность рассчитанных значений уменьшается, чем дальше вы рассчитываете от диагональной линии измеренных значений.

Итак, теперь мои вопросы:

Как я могу поместить мои 3 столбца в матричный стиль и как я могу вычислить недостающие NA?

Спасибо большоемного заранее, Крис

см. выше

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Если ваши реальные данные имеют столько же значений NA, сколько ваша матрица выборки, вероятно, они не будут хорошо работать в rgl::persp3d.Я бы посоветовал придерживаться формата в 3 столбца, включая только не-1003 * значения.

Чтобы получить поверхностный график данных в этом формате, см. https://stackoverflow.com/a/53485406/2554330. Краткое описаниеверсия такова: если ваши данные находятся в кадре данных с именем df, код будет:

library(rgl)
dxyz <- deldir::deldir(x = df$col1, y = df$col2, z = df$col3, suppressMsge = TRUE)
plot3d(dxyz, col = "gray")
0 голосов
/ 27 декабря 2018

Если вы хотите создать трехмерную диаграмму рассеяния, пакет plotly - отличный выбор.Вы можете напрямую запустить приведенный ниже код, чтобы создать пример графика.Вы просто указываете переменные x, y, z, ссылаясь на них по именам переменных (см. Фрейм данных mpg).

# install.packages("plotly")
library(plotly)

plot_ly(data = mpg, x = ~cty, y = ~hwy, z = ~cyl) %>%
  add_markers(color = ~cyl, colors = colorRamp(c("yellow", "darkred")),
              alpha = 0.7, size = I(1)) %>% colorbar(title = "Cylinder") %>%
  layout(title= "3D Scatterplot", scene = list(xaxis = list(title = "CTY"),
                                               yaxis = list(title = "HWY"), 
                                               zaxis = list(title = "CYL"),
                                               range = c(3, 8)))

Относительно значений NA: Пакеты визуализации в R обычно либо полностью исключают наблюдения NA (строки), либо выдают ошибку.Если они дают ошибку, вы можете удалить их вручную (или заменить их, хотя это может быть не очень хорошей идеей).

Для удаления строк с NA в любых столбцах:

df = df[!apply(df, 1, anyNA), ]

Вот расширенный пример для этого:

df = mtcars
df[4, 1] = NA
df[10, 4] = NA

# WITH NA
dim(df) # rows, columns in data set
anyNA(df) # any NAs in data set?
sum(is.na(df)) # number of NAs in data set

# REMOVING NA
df = df[!apply(df, 1, anyNA), ]
dim(df) # rows, columns in data set
anyNA(df) # any NAs in data set?
sum(is.na(df)) # number of NAs in data set
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...