我有数据代表特定事件发生的日期 集群中的节点。数据目前看起来像这样:
07-Jan-2013: node025 node061
14-Jan-2013: node025 node034 node061
21-Jan-2013: node025 node034 node050 node061
28-Jan-2013: node025 node034 node061
04-Feb-2013: node025 node034 node061
11-Feb-2013: node025 node034 node061
18-Feb-2013: node034
25-Feb-2013: node034
11-Mar-2013: node025
我想知道R中的哪种情节可以让我绘制出的名字 节点作为y轴上的因子与日期和输入日期的形式 应该在。
我试过搜索“可变长度行”和“多个y值”但是 找不到我要找的东西。有什么想法吗?
干杯
答案 0 :(得分:3)
这是你在找什么?使用带有fill = T的read.table然后过滤掉空白
然后将数据融化以使其平坦
df<-read.table( text="07-Jan-2013: node025 node061
14-Jan-2013: node025 node034 node061
21-Jan-2013: node025 node034 node050 node061
28-Jan-2013: node025 node034 node061
04-Feb-2013: node025 node034 node061
11-Feb-2013: node025 node034 node061
18-Feb-2013: node034
25-Feb-2013: node034
11-Mar-2013: node025", fill=T)
require(reshape2)
flatdata<-melt(df,id.vars="V1")
# edit added the date format
ggplot(flatdata[flatdata$value != "",])+geom_point(aes(x=value,y=as.Date(V1, format="%d-%b-%Y"),color=variable),size=5,alpha=0.9) + coord_flip()
答案 1 :(得分:1)
df <- readLines(n=9)
07-Jan-2013: node025 node061
14-Jan-2013: node025 node034 node061
21-Jan-2013: node025 node034 node050 node061
28-Jan-2013: node025 node034 node061
04-Feb-2013: node025 node034 node061
11-Feb-2013: node025 node034 node061
18-Feb-2013: node034
25-Feb-2013: node034
11-Mar-2013: node025
df <- do.call(rbind.data.frame, lapply(strsplit(df, " "), function(row) {
cbind(row[1], row[-1])
}))
df[,1] <- as.Date(df[,1], format="%d-%b-%Y:")
plot(V2~V1, data=df) # defaults to spineplot()
答案 2 :(得分:1)
堆积条形图将执行此操作。
这是您的数据:
lines <- readLines(
tc <- textConnection("07-Jan-2013: node025 node061
14-Jan-2013: node025 node034 node061
21-Jan-2013: node025 node034 node050 node061
28-Jan-2013: node025 node034 node061
04-Feb-2013: node025 node034 node061
11-Feb-2013: node025 node034 node061
18-Feb-2013: node034
25-Feb-2013: node034
11-Mar-2013: node025")
); close(tc)
我们将其拆分为有用的组件并重新排列为数据框。
split_lines <- strsplit(lines, ":? ")
dates <- as.Date(
vapply(split_lines, head, character(1), n = 1),
"%d-%b-%Y"
)
nodes <- lapply(split_lines, tail, n = -1)
n <- vapply(nodes, length, integer(1))
node_data <- data.frame(
date = rep(dates, times = n),
node = unlist(nodes, use.names = FALSE)
)
使用ggplot进行绘图非常简单。
library(ggplot2)
ggplot(node_data, aes(date, fill = node)) +
geom_bar(binwidth = 1)