我有一些我希望可视化的数据,但我无法做到这一点。
我有这个游戏表:
label <- c("t","x","t","x","t","t","t","x","t","x")
t0 <- c(1:10)
t1 <- c(3:12)
t2 <- c(6:15)
t3 <- c(8:17)
data <- data.frame(t0, t1, t2, t3, label)
开头看起来像这样
t0 t1 t2 t3 label
1 1 3 6 8 t
2 2 4 7 9 x
3 3 5 8 10 t
4 4 6 9 11 x
我想绘制所有样本(行)的值,作为对四个时间点(t = 0,1,2,3)的一条线。此外,我想用一种颜色的标签t和另一种颜色的标签x为线条着色。所以在游戏数据中我最终得到10行,其中6行是一种颜色,另外4行。
我将非常感谢所有的帮助!我尝试了一些使用mathplot和ggplot的东西,但我真的被卡住了
答案 0 :(得分:0)
好的,我会咬人。
正如评论中所提到的,你的代码当前不会在R中工作。我试着构建我的答案,以便它可以使用与你提供的数据帧基本相同的数据帧,但我不得不对代码稍作修改,我在下面展示:
label <- c("t","x","t","x","t","t","t","x","t","x")
t0 <- c(1:10)
t1 <- c(3:12)
t2 <- c(6:15)
t3 <- c(8:17)
data <- data.frame(t0, t1, t2, t3, label)
如果我们要使用ggplot
,我们需要使用reshape2
包将您的数据转换为所谓的长格式。这发生在melt
步骤期间。请注意,variable
将成为我们的time
列。在ndata的操作序列期间,我们不断回顾ndata
对象。这样您就可以一步一步地遵循代码。
我们还需要一些我们现在加载的软件包:
# load packages
library(ggplot2)
library(reshape2)
library(dplyr)
data$sample_id <- as.character(rownames(data))
ndata <- melt(data, id = c("sample_id", "label")) # melt "data" into long form
ndata <- arrange(ndata, sample_id) # re-order rows by sample_id. Helpful for viewing dataframe
ndata <- mutate(ndata, variable = gsub("t", "", ndata$variable)) # remove the "t" character
ndata <- rename(ndata, time = variable)
ndata <- mutate(ndata, time = as.numeric(time)) # Make sure that time is numeric
newplot <- ggplot(ndata, aes(x = time, y = value, color = label, group = sample_id)) +
geom_point() +
geom_line()
newplot