我正在用ggplot绘制三行,但是当涉及通过数据帧的逻辑索引选择美观时,R输出错误“尺寸错误”。
JFK_weekday,LGA_weekday和EWR_weekday是这样构建的三个独立数据框
JFK_weekday LGA_weekday EWR_weekday
NO x NO i NO m
YES y YES j YES n
这是我用来绘制线条的代码
ggplot() +
geom_line(data=JFK_weekday,
aes(x=row.names.data.frame(JFK_weekday), y=JFK_weekday[, 1],
color="red", size=1.5)) +
geom_line(data=LGA_weekday,aes(x=row.names.data.frame(LGA_weekday),
y=LGA_weekday[, 1], color="blue", size=1.5)) +
geom_line(data=EWR_weekday, aes(x=row.names.data.frame(EWR_weekday),
y=EWR_weekday[, 1], color="yellow", size=1.5))
忽略美学必须具有相同长度的问题(我发现我能够解决),我担心的是,关于[,1]逻辑索引,我得到的“维数错误”,而这在控制台中正常工作。有什么想法吗?
答案 0 :(得分:0)
我认为您需要首先合并三个数据帧,有两个步骤要做。
首先,将列与cbind()
合并,然后将整个内容与t()
扭转(“ t”实际上来自 t ranspose)。
dat <- t(cbind(JFK_weekday, LGA_weekday, EWR_weekday))
# > dat
# NO YES
# JFK_weekday 229 963
# LGA_weekday 715 969
# EWR_weekday 846 441
第二,melt()
您的数据。
library(data.table)
dat.m <- melt(dat)
# > dat.m
# Var1 Var2 value
# 1 JFK_weekday NO 229
# 2 LGA_weekday NO 715
# 3 EWR_weekday NO 846
# 4 JFK_weekday YES 963
# 5 LGA_weekday YES 969
# 6 EWR_weekday YES 441
现在可以更轻松地绘制数据了。
library(ggplot2)
ggplot(dat.m, aes(x=Var2, y=value, group=Var1, color=Var1)) +
geom_line()
结果
数据
JFK_weekday <- data.frame(JFK_weekday=t(cbind(NO=229, YES=963)))
LGA_weekday <- data.frame(LGA_weekday=t(cbind(NO=715, YES=969)))
EWR_weekday <- data.frame(EWR_weekday=t(cbind(NO=846, YES=441)))