【问题标题】:Order facet by semester and year按学期和年份排序
【发布时间】:2021-12-28 22:34:00
【问题描述】:

我正在尝试使用 facet_grid 订购 ggplot 图,例如:

抱歉,我知道我的数据没有逻辑,但可以显示我的方面问题...

在我的真实数据中我没有这个数据,只有我在这个例子中使用下面的这个块来获取我的数据:

################ only to get data in my example ######################


    set.seed(12345)
    Date <- seq(as.Date("2010/1/1"), as.Date("2013/1/1"), "6 months" )
    Y <- rnorm(n=length(Date), mean=100, sd=1)
    df <- data.frame(Date, Y)
    df$Year <- format(df$Date, "%Y")
    df$Sem <- format(df$Date, "%b")
    df$Sem <- gsub("ene.", "1S",df$Sem )
    df$Sem <- gsub("jul.", "2S",df$Sem )
    df$MonthYear <- format(df$Date, "%b-%Y")

     ##############        o          #################

我的真实数据中的变量是:

学期、学期和年

我在第二次尝试中提取年份进行排序:

    df=df %>%
    mutate(extract_year= sub('.*(\\d{4}).*', '\\1', MonthYear)) 

    df$Semester=paste0(df$Sem,df$extract_year)

#这里我尝试对构面进行排序但失败了:

    df2 <- within(df,Semester <- ordered(Semester, levels = rev(sort(unique(Semester)))))

    df2 %>%
    ggplot(aes(y = Y )) + 
    geom_bar() +
    facet_grid(Semester~.)

我也试过:

    df2 %>%
    arrange(extract_year) %>%
    ggplot(aes(y = Y )) + 
    geom_bar() +
    facet_grid(Semester~.)

我想得到这个订单:

1S2010/2S2010/1S2011/2S2011/1S2012/2S2012

【问题讨论】:

    标签: r sorting ggplot2 facet-grid


    【解决方案1】:

    基本上你必须按照你想要的顺序设置关卡的顺序。实现这一目标的一种选择是按您想要的顺序arrange 数据,并使用forcats::fct_inorder 设置您的Semester 变量的级别顺序。

    library(ggplot2)
    library(dplyr)
    
    ## Make Semester variable in the desired format
    df <- mutate(df, Sem = recode(Sem, Jan = "1S", Jul = "2S"),
                 Semester = paste0(Sem, Year))
    
    # Arrange and set order
    df <- df %>% 
      arrange(gsub("^(\\dS)(\\d{4})$", "\\2\\1", Semester)) %>%
      mutate(Semester = forcats::fct_inorder(Semester))
    
    df %>%
      ggplot(aes(y = Y )) + 
      geom_bar() +
      facet_grid(Semester~.)
    

    【讨论】:

    • 或者,mutate(Semester = forcats::fct_reorder(Semester, Date))
    • @JonSpring 谢谢。 2绝对。在这种情况下,这是最短的方法。
    • 谢谢,但我的真实数据中没有 df$Date,我在示例中对此进行了评论
    • @RodrigoBadilla 如果您提供与真实数据结构相似的示例数据,会更容易为您提供帮助。反正。方法是一样的。安排和设置顺序。查看我的编辑。
    • 感谢@stefan 的帮助,我解决了你的问题。我知道在我的帮助下这并不容易,但我尝试复制它。
    猜你喜欢
    • 2021-12-27
    • 2022-08-11
    • 1970-01-01
    • 2012-07-04
    • 2014-06-10
    • 1970-01-01
    • 2010-12-18
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多