Постройте один столбец фрейма данных со всеми другими столбцами, используя ggplots и показывая плотности в R - PullRequest
0 голосов
/ 13 июня 2018

У меня есть фрейм данных с 20 столбцами, и я хочу построить один конкретный столбец (называемый BB) для каждого отдельного столбца в фрейме данных.Графики, которые мне нужны, представляют собой графики плотности вероятности, и я использую следующий код для генерации одного графика (например, построение столбцов BB и AA):

mydata = as.data.frame(fread("filename.txt")) #read my data as data frame

#function to calculate density
get_density <- function(x, y, n = 100) {
  dens <- MASS::kde2d(x = x, y = y, n = n)
  ix <- findInterval(x, dens$x)
  iy <- findInterval(y, dens$y)
  ii <- cbind(ix, iy)
  return(dens$z[ii])
}
set.seed(1)

#define the x and y of the plot; x = column called AA; y = column called BB
xy1 <- data.frame(
  x = mydata$AA,
  y = mydata$BB
)

#call function get_density to calculate density for the defined x an y
xy1$density <- get_density(xy1$x, xy1$y) 

#Plot
ggplot(xy1) + geom_point(aes(x, y, color = density), size = 3, pch = 20) + scale_color_viridis() +
  labs(title = "BB vs. AA") +
  scale_x_continuous(name="AA") +
  scale_y_continuous(name="BB")

Буду признателен, если кто-тоЯ могу предложить метод для создания множественного графика BB против каждого другого столбца, используя вышеупомянутую функцию плотности и команду ggplot. Я попытался добавить цикл, но нашел его слишком сложным, особенно при определении x и y для построения графика или вызовафункция плотности.

1 Ответ

0 голосов
/ 13 июня 2018

Поскольку вы не предоставляете пример данных, я покажу демо mtcars.Мы конвертируем данные в длинный формат, рассчитываем плотности и строим граненый график.Мы строим столбец mpg против всех остальных.

library(dplyr)
library(tidyr)
mtlong = gather(mtcars, key = "var", value = "value", -mpg) %>%
    group_by(var) %>%
    mutate(density = get_density(value, mpg))

ggplot(mtlong, aes(x = value, y = mpg, color = density)) +
    geom_point(pch = 20, size = 3) +
    labs(x = "") +
    facet_wrap(~ var, scales = "free")

enter image description here

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