Ggplot美观,索引数据框时维度数不正确

时间:2019-02-16 21:06:13

标签: r ggplot2 indexing

我正在用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]逻辑索引,我得到的“维数错误”,而这在控制台中正常工作。有什么想法吗?

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()

结果

enter image description here

数据

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)))