【问题标题】:How to subset in ggplot based on two character variables?如何根据两个字符变量在 ggplot 中进行子集化?
【发布时间】:2021-03-31 10:50:18
【问题描述】:

我正在尝试根据两个字符变量在 ggplot 中对我的数据进行子集化:模型和字母。我想对具有字母“a”的“m1”进行子集化。在原始数据中,我有多行具有“m1”和“a”,但下面只是一个可重复的小示例。有人可以指导我如何在 ggplot 的命令中对其进行子集化吗?

model   value   letter
m1        5       a
m2        11      b
m3        2       c
m1        4       d
m2        22      e
m3        6       f

 structure(list(model = structure(c("m1", "m2", "m3", "m1", "m2", 
"m3"), format.stata = "%9s"), value = structure(c(5, 11, 2, 4, 
22, 6), format.stata = "%9.0g"), letter = structure(c("a", "b", 
"c", "d", "e", "f"), format.stata = "%9s")), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))

【问题讨论】:

    标签: r ggplot2 dplyr tidyr


    【解决方案1】:

    我们可以通过filter 进行分组,这可以用作ggplot 的输入

    library(dplyr)
    library(ggplot2)
    df1 %>% 
        group_by(model) %>%
        filter('a' %in% letter)  %>%
        ggplot(aes(x = letter, y = value)) +
           geom_col()
    

    或者如果只是 'm1' 和 'a',请立即执行 filter

    df1 %>%
        filter(model == 'm1', letter == 'a') %>%
         ggplot(aes(x = letter, y = value)) +
           geom_col()
    

    【讨论】:

      【解决方案2】:

      这行得通吗?

      ggplot(subset(df,model=='m1' & letter=='a'),aes(x=letter,y=value))+
        geom_point()
      

      解释:

      在ggplot2 中,data 参数允许使用其他函数,例如subset()。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-13
        相关资源
        最近更新 更多