При создании 3D-гистограммы в R с использованием Hist3D из библиотеки Plot3D ячейки не совпадают с отметками оси

#r #histogram #plot3d

#r #гистограмма #plot3d

Вопрос:

Как следует из моего названия, я пытаюсь создать 3D-гистограмму с помощью пакета Plot3D. Ниже приведен минимальный рабочий (или, скорее, не рабочий) пример проблемы, с которой я столкнулся:

 library(plot3D)

x = runif(10000)/2
y=runif(10000)

cuts = c(0, 0.2, 0.4, 0.6, 0.8, 1)

x_cut = cut(x, cuts)
y_cut = cut(y, cuts)

xy_table = table(x_cut, y_cut)

hist3D(z=xy_table, ticktype = "detailed")
 

В результате получается следующее изображение:
введите описание изображения здесь

Как вы можете видеть на изображении, ячейки гистограммы выходят за пределы [0,1] x [0,1]. Могу ли я в любом случае заставить ячейки точно совпадать с отметками на оси? То есть я хотел бы, чтобы график правильно представлял, что все точки данных имеют значения x и y от 0 до 1. Глядя на график сейчас, можно было бы предположить, что ячейка, содержащая начало координат, например, может также содержать точку данных (-0.1, 0). Это не может произойти в данных, которые я пытаюсь отобразить, и мне нужна ось, чтобы передать это.

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

 hist3D(z=xy_table, ticktype = "detailed", xlim=c(0,1), ylim=c(0,1))
 

Чем я получаю что-то еще хуже:
введите описание изображения здесь

Я чувствую, что, должно быть, упускаю что-то очевидное, но я просто не вижу, что это такое. Если у кого-нибудь есть ответ, пожалуйста, поделитесь. И спасибо, что нашли время, чтобы прочитать мой вопрос.

Ответ №1:

0 - 1 диапазон — это поведение по умолчанию hist3D , если вы не определяете x y диапазоны и .

Вы получите ожидаемый результат, если определите x y аргументы и, используя середину ячеек ( 0.1 0.3 0.5 0.7 0.9 ):

 hist3D(x = seq(0.1,0.9,0.2),y=seq(0.1,0.9,0.2),z=xy_table, ticktype = "detailed")
 

введите описание изображения здесь