Making line plot with discrete x-axis in ggplot2

Marty999 picture Marty999 · Jul 27, 2017 · Viewed 7.7k times · Source

I am building a ggplot2 figure with a facet grid. On my Y-axis are percentages, and my X-axis is the concentration (in numbers). Each facet has 3 groups (0, 24 and 48 hours)

ggplot(data=MasterTable, aes(x=Concentration, y=Percentage, group=Time)) + 
  geom_point() + 
  geom_line() + 
  facet_grid(Chemicals ~ Treatments) 

This generates a continuous x-axis. Since the values are not evenly spread out, I would prefer a discrete axis to better visualize my data. I followed the following tutorial with no luck. The first figure is exactly what I am trying to do.

I also tried formatting the axis:

scale_x_discrete(labels("0", "0.1", "2", "50"))

and formatting the line:

geom_line(aes(Time))

and following this tutorial.

I think this problem is that the values on the x-axis are integers rather than strings. This makes the default axis continuous. How can I change this?? I am sure the solution is simple, I just can't figure it out.

Thanks in advance!

Answer

AK88 picture AK88 · Jul 27, 2017

On this page they make the following modification df2$dose<-as.factor(df2$dose). You can try to modify your x-axis as df2$Concentration<-as.factor(df2$Concentration)

or like this:

ggplot(data=MasterTable, aes(x=factor(Concentration), y=Percentage, group=Time)) + 
  geom_point() + 
  geom_line() + 
  facet_grid(Chemicals ~ Treatments)