使用CORRECT对应的绘图名称

时间:2017-09-23 01:54:14

标签: r ggplot2 lapply posixct

需要帮助: 我原来的df有50个变量:49个POSIXct类和1个分类结果变量。我想绘制(ggplot)49个变量来探索它作为散点图的时间分布。我想将这些情节放入一个情节网格中。麻烦的是将相应的图表变为var名称正确。我的解决方案似乎很长。

```{r}
library(grid)
library(ggplot2)
library(gridExtra)
str(a[c(1:4,50)])
```
  

'data.frame':48 obs。 4个变量:

     

$ admd:POSIXct,格式:“2017-09-23 12:00:00”“2017-09-23 10:31:00”......

     

$ feverd:POSIXct,格式:“2017-09-23 12:00:00”“2017-09-23 12:00:00”......

     

$ defd:POSIXct,格式:“2017-09-23 16:00:00”“2017-09-23 12:13:00”......

     

$ ns1d:POSIXct,格式:NA“2017-09-23 10:13:00”......

     

$结果:因子w / 2级“死亡”,“放电”:2 1 2 2 2 2 2 2 2 2 ...

我想绘制这些: intended results/plots: each plot has its corresponding variable name

我所做的一切都没有完善:

#plot_fun2
```{r}
plot_fun<- function(df){
  ggplot(df, aes_string(x=df[[1]], y=rnorm(1:48))) +
    geom_point(aes(col=a$outcome), alpha=0.5, cex=3)+
    theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  xlab("Time") + ylab("RandomVisualValue")+
  scale_colour_manual(name="Outcome",values=c("#FF420E","#89DA59")) +
  ggtitle(names(df)[[1]])
}
```

```{r}
sample_list<-list(
  data.frame(a[1]), data.frame(a[2]), data.frame(a[3]), data.frame(a[4])) #CAN WE SIMPLIFY THIS? my original data frame has 49 vars!

timedistb<-lapply(sample_list, plot_fun)
do.call(grid.arrange, c(timedistb, ncol=2, nrow=2))
```

数据摘要:https://github.com/dcicantab5/recover-study/blob/master/c.csv

1 个答案:

答案 0 :(得分:1)

不要理解y轴的随机数是什么,但您可能想尝试gatherfacet_wrap的某种组合:

  • gather:将日期时间变量收集到存储列名的一列datevar和存储各个日期(每行)的一列dateval中。
  • facet_wrap:为datevar中的每个列名创建构面,其中每个构面仅包含各个日期时间变量的数据(日期时间变量的前一列名称)

示例代码:

library(dplyr)
library(tidyr)
library(ggplot2)
df <- read.csv("https://raw.githubusercontent.com/dcicantab5/recover-study/master/c.csv")
df <- df %>% 
    gather(datevar, dateval, -X, -outcome) %>% 
    mutate(rnum = rnorm(1))
ggplot(df, aes(x=dateval, y=rnum)) +
    geom_point(aes(col=outcome), alpha=0.5, cex=3)+
    theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  xlab("Time") + ylab("RandomVisualValue")+
  scale_colour_manual(name="Outcome",values=c("#FF420E","#89DA59")) + 
  facet_wrap(~datevar)