Постройте 3D-данные в R

У меня есть набор данных 3D:

data = data.frame(
    x = rep( c(0.1, 0.2, 0.3, 0.4, 0.5), each=5),
    y = rep( c(1, 2, 3, 4, 5), 5)
)

data$z = runif(
    25,
    min = (data$x*data$y - 0.1 * (data$x*data$y)),
    max = (data$x*data$y + 0.1 * (data$x*data$y))
)

data
str(data)

И я хочу для построения графика, но встроенные функции R alwyas выдают ошибку

, увеличивая ожидаемые значения «x» и «y»

# ### 3D Plots ######################################################
# built-in function always give the error
#    "increasing 'x' and 'y' values expected"
demo(image)
image(x = data$x, y = data$y, z = data$z)

demo(persp)
persp(data$x,data$y,data$z)

contour(data$x,data$y,data$z)

Когда я поискал в Интернете, я обнаружил, что это сообщение появляется, когда комбинации X и значения Y не уникальны. Но здесь они уникальны.

Я пробовал некоторые другие библиотеки, и там все работает без проблем. Но мне не нравится стиль графиков по умолчанию (встроенные функции должны соответствовать моим ожиданиям ).

# ### 3D Scatterplot ######################################################
# Nice plots without surface maps?
install.packages("scatterplot3d", dependencies = TRUE)
library(scatterplot3d)
scatterplot3d(x = data$x, y = data$y, z = data$z)

# ### 3D Scatterplot ######################################################
# Only to play around?
install.packages("rgl", dependencies = TRUE)
library(rgl)
plot3d(x = data$x, y = data$y, z = data$z)
lines3d(x = data$x, y = data$y, z = data$z)
surface3d(x = data$x, y = data$y, z = data$z)

Почему мои наборы данных не принимаются встроенными функциями?

45
задан zx8754 18 April 2019 в 10:46
поделиться