【问题标题】:geom_line with only one observationgeom_line 只有一次观察
【发布时间】:2020-02-12 01:15:05
【问题描述】:

我有以下数据框:

bla <- data.frame(ID=1:5, phrase=c(1,1,2,2,2),word = c("Hello", "world!", "This", "is", "great."), measurement1=c(runif(1), "NA", runif(2), "NA"), measurement2=runif(5))

bla$phrase 显示两个短语,每个单词有两个值 measurement1measurement2 被采用。

我想用 (withfacet_wrap(~phrase)?) 分别绘制每个短语。 在 y 轴上,我想要两条线;一张显示measurement1,一张显示measurement2

我试过了:

ggplot(bla) + geom_line(aes(reorder(word,ID), measurement1))+ geom_line(aes(reorder(word,ID), measurement2))+facet_wrap(~phrase)

这似乎不起作用并显示警告:

geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?

感谢您的帮助

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    不确定这是不是你想要的:

    ggplot(bla) +
      geom_line(aes(reorder(word,ID), measurement1, group=1)) +
      geom_line(aes(reorder(word,ID), measurement2, group=1)) +
      facet_wrap(~phrase)
    

    制作这个图:

    【讨论】:

    • 这几乎是我想要的,只是我希望不显示另一个短语的单词并删除 NA,尽管如果该短语仅包含这并没有任何意义两个词(最后一个词从来没有测量值1)。
    • 您可以使用任何方法来过滤 NA(或者更确切地说是“NA”,因为在您的示例中 measurement1 有一些值 "NA"string "NA",而不是缺少的类型NA!),例如,使用dplyrbla %>% filter(!measurement1 %in% c("NA")) %>% filter(!is.na(measurement1)) %>% ggplot() + geom_line(aes(reorder(word,ID), measurement1, group=1)) + geom_line(aes(reorder(word,ID), measurement2, group=1)) + facet_wrap(~phrase)。但是,是的,那么你就会失去对phrase 的观察1
    猜你喜欢
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    相关资源
    最近更新 更多