代码之家  ›  专栏  ›  技术社区  ›  Alejandro Andrade

如何防止geom_区域在ggplot2中按字母顺序排列[复制]

  •  2
  • Alejandro Andrade  · 技术社区  · 6 年前

    即时消息使用 geom_area 绘制100%的图我遇到的问题是,它是按字母顺序为我不想要的图排序数据这是我使用的数据的一个例子:

    t var val
    0   A  28
    0   B  47
    0   C  50
    0   D  20
    1   A  19
    1   B  21
    

    这就是我得到的情节: enter image description here

    问题是我想自定义数据的绘制顺序例如,我希望D在图的顶部,B在D下面,然后A和C,但是我不知道如何去做。

    这是创建此图所需的代码:

    library(ggplot2)
    d <- data.frame(t=rep(0:23,each=4),var=rep(LETTERS[1:4],4),val=round(runif(4*24,0,50)))   
    ggplot(d, aes(x=t,y=val,group=var,fill=var)) + geom_area(position="fill")
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Merik    6 年前

    您可以首先创建一个具有所需顺序的新因子变量,然后将其用于 fill 美学,像这样:

    fill.order <- factor(d$var, levels = c('D', 'A', 'C', 'B'))
    ggplot(d, aes(x=t,y=val)) +
      geom_area(position="fill", aes(x=t, y=val, fill=fill.order)) +
      labs(fill = 'var')
    

    enter image description here