У меня есть более общий вопрос относительно принципа плотности 2d. Я использую ggplot и функцию density2d для визуализации движений животных. Моя идея заключалась в вычислении тепловых карт, показывающих, где животное большую часть времени и/или идентифицирует области, представляющие особый интерес. Тем не менее функция плотности 2d иногда генерирует довольно необъяснимые графики.Расчет оценки плотности в плотности 2d?
Вот что я имею в виду:
set.seed(4)
x<-runif(50,1,599)
y<-runif(50,1,599)
df<-data.table(x,y)
ggplot(df,aes(x=x,y=y))
+stat_density2d(aes(x=x,y=y,fill=..level..,alpha=..level..),bins=50,geom="polygon")
+coord_equal(xlim=c(0,600),ylim=c(0,600))
+expand_limits(x=c(0,600),y=c(0,600))
+geom_path()
, который выглядит следующим образом:
Есть районы с оценкой плотности, но без данных (около й: 50, у: 300).
Теперь сравните с этим:
set.seed(13)
x<-runif(50,1,599)
y<-runif(50,1,599)
df<-data.table(x,y)
ggplot(df,aes(x=x,y=y))
+stat_density2d(aes(x=x,y=y,fill=..level..,alpha=..level..),bins=50,geom="polygon")
+coord_equal(xlim=c(0,600),ylim=c(0,600))
+expand_limits(x=c(0,600),y=c(0,600))
+geom_path()
, который выглядит следующим образом:
Здесь есть регионы "wihtout" оценка плотности, но с фактическими данными (около й: 100, Y: 550).
Кто-то задал соответствующий вопрос:
Create heatmap with distribution of attribute values in R (not density heatmap)
но нет удовлетворительных ответов можно найти.
Так что мой вопрос будет (i) Почему? и (ii) Как избежать/настроить, если это возможно?
Благодарим Вас за ответ jazzurro (и благодаря Hong Ooi для загрузки на fiugures, я думаю)! Некоторое время назад (я уже потратил на это некоторое время) я уже пробовал «..плотность», но это оказалось разочаровывающим, поскольку весь сюжет окрашен оценкой. Однако, вдохновленный вашим ответом, я добавил «scale_fill_gradientn (colors = c (« transparent »,« darkblue »,« cyan »), na.value =« transparent »), что приводит к чему-то, с чем я могу жить пока;) –
@QA Рад слышать, что это вам помогло. Сейчас я проверю вашу идею. :) – jazzurro