iskandarblue
iskandarblue

Reputation: 7526

ggplot: line plot for discrete x-axis

I have the following table but after many tries have been unable to plot the data so that the x-axis tick marks line up with the year. I have found solutions to boxplots, but not for geom_line()

How can I make discrete labels for year?

the following solutions did not work

g + scale_x_discrete(limits=c("2013","2014","2015"))
g + scale_x_discrete(labels=c("2013","2014","2015"))
distance_of_moves
  distance moved year
1       2.914961 2013
2       2.437516 2014
3       2.542500 2015

ggplot(data = distance_of_moves, aes(x = year, y = `distance moved`, group = 1)) +
 geom_line(color = "red", linetype = "dashed", size = 1.5) +
 geom_point(color = "red", size = 4, shape = 21, fill = "white") + 
 ylab("Average distance of movement") + 
 xlab("year") 

enter image description here

Upvotes: 14

Views: 30443

Answers (1)

Eric
Eric

Reputation: 996

Reproducible example:

data <- data.frame(dist=c(2.914, 2.437, 2.542), year=c(2013, 2014, 2015))
# this ensures that stuff will be ordered appropriately
data$year <- ordered(data$year, levels=c(2013, 2014, 2015))
ggplot(data, aes(x=factor(year), y=dist, group=1)) +
  geom_line() +
  geom_point()

enter image description here

Specifying the year as an ordered factor will ensure that the x axis is ordered appropriately, regardless of the order in which the levels appear (whereas just using "factor(year)" in the plotting aesthetic could lead to issues).

Upvotes: 18

Related Questions