需要帮助: 我原来的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
答案 0 :(得分:1)
不要理解y轴的随机数是什么,但您可能想尝试gather
和facet_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)