根据标签和时间绘制表达数据

时间:2018-04-04 20:54:47

标签: r visualization

我有一些我希望可视化的数据,但我无法做到这一点。

我有这个游戏表:

 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的东西,但我真的被卡住了

1 个答案:

答案 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

Generated Plot