Making a stacked area plot using ggplot2

前端 未结 1 392
猫巷女王i
猫巷女王i 2020-11-30 08:58

I\'m using the following data structure to try and make a stacked area chart:

df <- data.frame(PopDen = c( 0.002279892, 0.002885407, 0.004291351, 0.002457         


        
相关标签:
1条回答
  • 2020-11-30 09:39

    I'm not sure what you are plotting here, but don't you want to be plotting PopDen along the y axis rather than the x axis? You can order the DomArea by each PR_Cat category using ddply from the plyr package, and then the stacking works as follows: EDIT I realized you probably want the plot to be stacked in the order Low, Medium High, so we need to first force this ordering on the PR_Cat factor by doing:

    df$PR_Cat <- ordered( df$PR_Cat, levels = c('Low', 'Medium', 'High'))
    

    And now create the DomAreaByCat column using ddply:

    df <- ddply(df, .(PR_Cat), transform, DomAreaByCat = order(DomArea))
    

    Your df will look like this:

    > df
            PopDen DomArea PR_Cat DomAreaByCat
    1  0.004291351  197180    Low            8
    2  0.002457731  131590    Low            5
    3  0.006631572  142210    Low            9
    4  0.007578882  166920    Low            2
    5  0.004465446  125640    Low            3
    6  0.007436628  184600    Low            7
    7  0.007412274  143510    Low           11
    8  0.004931548  117260    Low            4
    9  0.005438558  127480    Low           10
    10 0.002251421  181970    Low            6
    11 0.006438558  164180    Low            1
    12 0.003602076  127760 Medium            4
    13 0.005695585  190940 Medium            1
    14 0.005819783  133440 Medium            3
    15 0.006257411   69340 Medium            5
    16 0.008635908  143620 Medium            2
    17 0.002279892  253500   High            4
    18 0.002885407  135270   High            2
    19 0.009001456  139940   High            3
    20 0.006951703  126280   High            1
    

    And then you can do the stacked area plot like this:

    p <- ggplot(df, aes( DomAreaByCat, PopDen))
    
    p + geom_area(aes(colour = PR_Cat, fill= PR_Cat), position = 'stack')   
    

    alt text

    0 讨论(0)
提交回复
热议问题