【问题标题】:ggplot facet_grid data.table order bug [duplicate]ggplot facet_grid data.table 顺序错误 [重复]
【发布时间】:2017-09-13 09:30:34
【问题描述】:

当我尝试将 ggplot 与 data.table 一起使用时,我发现了一个奇怪的行为,这似乎是一个错误。

根据我在 data.table 中设置的行顺序(使用 setkey(data,V1,V2..)),facet_grids 完全不同。

这是工作 facet_grid 的示例:

  setkey(dat.rel,FINISH_TIME_BUFFER) #Set Order of Rows according t FINISH_TIME_BUFFER
  ggplot(dat.rel)+                        #Make Plot
  aes(x=dat.rel$INdex,y=dat.rel$GWorkerMissing)+
  scale_colour_gradientn(colours=rainbow(10),trans="log",breaks=c(1,100,500,10000))+
  geom_point(aes(color=dat.rel$MAX_RUNTIME_IN_SECONDS),size=10,alpha=0.7)+
  facet_grid( ~ dat.rel$FINISH_TIME_BUFFER)+
  geom_text(aes(label=dat.rel$FINISH_TIME_BUFFER),size=4)

结果如下:

https://mathtec-my.sharepoint.com/personal/c_roehl_mathtec_at/_layouts/15/guestaccess.aspx?docid=160377f61360e41c3b4e9accf8b003c24&authkey=AV1U9O-wqZGlCLaRkQyDPUE

如果我现在将第一行替换为

setkey(dat.rel,INdex)

通过索引对data.table进行排序,结果如下:

https://mathtec-my.sharepoint.com/personal/c_roehl_mathtec_at/_layouts/15/guestaccess.aspx?docid=10a459006c5c74c9d9782cbfeedba56d2&authkey=Ad9Ncb76P0IqkJN9iroTy7Y

正如您在每个点的 geom_text 上看到的,FINISH_TIME_BUFFER 未正确分配给相应的网格。

ggplot好像有Bug,但为了确定不是我的错,我在这里试一试。

【问题讨论】:

  • 尝试删除所有dat.rel$。您无需在aes() 中指定数据集。
  • 就是这样,非常感谢!这意味着 ggplot 在内部使用我猜的 data.table 的副本。
  • 因为你告诉ggplot使用dat.rel (ggplot(dat.rel) + ...)。

标签: r ggplot2 data.table facet-grid


【解决方案1】:

只需删除绘图配置中的所有 dat.rel$ 即可使 facet_grids 按预期工作,与行顺序无关。

【讨论】:

    猜你喜欢
    • 2017-09-28
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 2015-12-26
    相关资源
    最近更新 更多