Рассчитать и отобразить несколько плотностей? - PullRequest
1 голос
/ 01 августа 2020

У меня есть матрица с несколькими столбцами, и я хотел бы вычислить плотность каждого столбца, а затем построить эти плотности на одном базовом графике R. Также было бы проще, если бы график имел автоматически скорректированный масштаб.

m <- matrix(rnorm(10), 5, 10))

Ответы [ 2 ]

2 голосов
/ 01 августа 2020

Создайте список плотностей d, вычислите значения xlim и ylim и используйте их для создания пустого графика. Наконец, нарисуйте каждую из плотностей на этом графике и, при необходимости, нарисуйте легенду. По запросу используется только базовый R.

set.seed(123)
m <- matrix(rnorm(50), 5, 10) # test data

d <- apply(m, 2, density)

xlim <- range(sapply(d, "[[", "x"))
ylim <- range(sapply(d, "[[", "y"))
plot(NA, xlim = xlim, ylim = ylim, ylab = "density")

nc <- ncol(m)
cols <- rainbow(nc)
for(i in 1:nc) lines(d[[i]], col = cols[i])

legend("topright", legend = 1:nc, lty = 1, col = cols, cex = 0.7)

Скриншот

1 голос
/ 01 августа 2020

Это также можно сделать с помощью ggplot2:

library(reshape2)
library(ggplot2)
#Data
set.seed(123)
m <- as.data.frame(matrix(rnorm(50), 5, 10))
#Melt
meltdata <- melt(m)
#Plot 1
ggplot(meltdata,aes(value,color=variable))+
  geom_density()+ggtitle('Plot 1')
#Plot 2
ggplot(meltdata,aes(value,fill=variable))+
  geom_density(alpha=0.6)+ggtitle('Plot 2')

enter image description here

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

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