Как создать ggplot с facet_grid () для каждого столбца матрицы - PullRequest
1 голос
/ 25 апреля 2019

Я хочу создать график в R с ggplot(), чтобы визуализировать данные, включенные в переменную matrix, которые выглядят следующим образом:

matrix <- matrix(c(time =c(1,2,3,4,5),v1=rnorm(5),v2=c(NA,1,0.5,0,0.1)),nrow=5)
colnames(matrix) <- c("time","v1","v2")

df <-data.frame(
  time=rep(matrix[,1],2),
  values=c(matrix[,2],matrix[,3]),
  names=rep(c("v1","v2"), each=length(matrix[,1]))
)
ggplot(df, aes(x=time,y=values,color=names)) +
  geom_point()+
  facet_grid(names~.)

Есть ли более быстрый способ, чем преобразование данных в data.frame, как у меня? Этот способ кажется очень трудоемким .. Буду признателен за любую помощь! Заранее спасибо.

1 Ответ

1 голос
/ 25 апреля 2019

Тидиверс подход:

Это создаст структуру данных, которую вы должны использовать в ggplot

library(tidyverse)
 matrix %>% 
  as_data_frame() %>% 
  gather(., names, value, -time) 

Это сгенерирует структуру данных и отобразит все сразу

matrix %>% 
  as_data_frame() %>% 
  gather(., names, value, -time) %>% 
  ggplot(., aes(x=time,y=value,color=names)) + 
  geom_point()+
  facet_grid(names~.)
...