Search code examples
rggplot2geom-area

Geom_area plot doesn't fill the area between the lines


I want to make an area plot with ggplot(mpg, aes(x=year,y=hwy, fill=manufacturer)) + geom_area(), but I get this:

geom_area

I'm realy new in R world, can anyone explain why it does not fill the area between the lines? Thanks!


Solution

  • First of all, there's nothing wrong with your code. It's working as intended and you are correct in the syntax required to do what you are looking to do.

    Why don't you get the area geom to plot correctly, then? Simple answer is that you don't have enough points to draw a proper line between your x values for all of the aesthetics (manufacturers). Try the geom_point plot and you'll see what I mean:

    ggplot(mpg, aes(x=year,y=hwy)) + geom_point(aes(color=manufacturer))
    

    enter image description here

    You need a different dataset. Here's a dummy one that is simply two lines with different slopes. It works as expected because each of the aesthetics has y values which span the x labels:

    # dummy dataset
    df <- data.frame(
        x=rep(1:10,2),
        y=c(seq(1,10,length.out=10), seq(1,5,length.out=10)),
        z=c(rep('A',10), rep('B', 10))
    )
    
    # plot
    ggplot(df, aes(x,y)) + geom_area(aes(fill=z))
    

    enter image description here