I don't know why but when I run ggplot stacked area chart, years on the x-axis are doubles like 2012.5.... I set them as integer but still have this issue. Any solution?
df$Year <- as.integer(df$Year)
order <- df %>% filter(Year ==max(df$Year) ) %>% arrange(desc(Sales)) %>% select(Category)
df$Category <- factor(df$Category, levels = order$Category)
df %>%
ggplot(aes(x = Year, y = Sales, fill = Category))
geom_area()
CodePudding user response:
You can specify the breaks to use with scale_x_continuous()
.
df %>%
ggplot(aes(x = Year, y = Sales, fill = Category))
geom_area() scale_x_continuous(breaks=2010:2020)
To make it more dynamic and automatically choose the limits base on your data, use:
df %>%
ggplot(aes(x = Year, y = Sales, fill = Category))
geom_area() scale_x_continuous(breaks=min(df$Year):max(df$Year))
And if you don't want to show every year you can use seq()
to just have every Nth year. E.g. for every third year:
df %>%
ggplot(aes(x = Year, y = Sales, fill = Category))
geom_area() scale_x_continuous(breaks=seq(min(df$Year),max(df$Year),3))
CodePudding user response:
You could add scale_x_continuous(breaks = seq(min(df$year), max(df$year), 1))
per below:
library(tidyverse)
df <- tribble(
~year, ~sales, ~category,
2020, 4, "a",
2021, 5, "a",
2022, 5, "a",
2020, 4, "b",
2021, 5, "b",
2022, 5, "b"
)
df %>%
ggplot(aes(year, sales, fill = category))
geom_area()
scale_x_continuous(breaks = seq(min(df$year), max(df$year), 1))
Created on 2022-04-30 by the reprex package (v2.0.1)