27
votes

Apologies if this is easy to solve, but I can't get my head around it.

I have this data frame:

> aaci
         Date    Plate.1    Plate.2   Plate.3   Plate.4    Plate.5     Plate.6   Plate.7    Plate.8   Average         SE Species
1  2014-06-19  0.0000000  0.0000000  0.000000  0.000000  0.0000000   0.0000000  0.000000  0.0000000  0.000000  0.0000000      aa
7  2014-08-04  7.0057778 11.0000000 24.269333 10.439111 28.5724444  92.4604444  5.584000 55.5448889 29.359500 10.7354126      aa
13 2014-09-17 84.4075556 59.2493333 62.664444 38.147556 73.8417778  93.5208889 72.782667 94.5164444 72.391333  6.7116450      aa
19 2014-10-16 56.9840000 64.9733333 45.124444 38.817333 56.2031111  76.4613333        NA 85.4017778 60.566476  6.2339579      aa
25 2014-11-14 75.7146667 72.3604444 62.126222 20.095111 73.9520000  83.8688889        NA 61.5466667 64.237714  7.9248240      aa
31 2014-12-12 61.6942222 65.4386667 46.337778 20.824444         NA  92.4413333        NA 76.3115556 60.508000 10.1172930      aa
37 2015-02-12 63.0524444 79.3906667 70.264444 15.057778         NA 105.0115556        NA 77.2866667 68.343926 12.1348258      aa
43 2015-03-09 72.0408889 59.5875556 68.546222 12.160444         NA  84.2777778        NA 70.9191111 61.255333 10.3376277      aa
2  2014-06-19  0.0000000  0.0000000  0.000000  0.000000  0.0000000   0.0000000  0.000000  0.0000000  0.000000  0.0000000      ci
8  2014-08-04  2.6173333  2.3884444  1.532889  0.000000  0.8017778   0.0000000  0.000000  0.9026667  1.030389  0.3748546      ci
14 2014-09-17  0.6782222  0.9875556  2.130222  2.372889  2.2395556   0.8448889  4.001333  0.1568889  1.676444  0.4408737      ci
20 2014-10-16  7.8302222  0.9142222  1.550222  1.792444  1.8346667   0.0000000        NA  0.0000000  1.988825  1.0170247      ci
26 2014-11-14  6.9600000  1.2528889  1.005778  6.876444  4.8715556   1.0506667        NA 10.3613333  4.625524  1.3864420      ci
32 2014-12-12 13.7844444  1.9368889  2.971556 10.785778         NA   1.5231111        NA  5.1284444  6.021704  2.0815131      ci
38 2015-02-12  3.4862222  3.9262222  1.613333 10.524444         NA   2.2493333        NA  3.6991111  4.249778  1.3078608      ci
44 2015-03-09  5.1493333  5.1004444  6.648000 14.676889         NA   9.3968889        NA  9.7488889  8.453407  1.4912960      ci

I am using this code to produce a plot:

ggplot(aaci, aes(x=Date, y=Average, colour=Species)) +
  geom_point(aes(colour=Species), size=4) +
  geom_line(aes(colour=Species), size=1.3) + 
  geom_errorbar(aes(ymin=Average-SE, ymax=Average+SE),
                size = .7,
                width=8,  colour="black",                  
                position = position_dodge(.9)) +
  scale_y_continuous(limits = c(0,100), breaks=seq(0,100,10)) +
  labs(x=("Date of Panel Observation"), y=("Mean Cover (%)")) +
  scale_colour_manual(values = colz, breaks = c("aa", "ci"),labels=c(expression(italic('Ascidiella aspersa')), expression(italic('Ciona intestinalis')))) +
  theme_bw() +
theme(panel.background = element_rect(colour = "black"),
      axis.text=element_text(size=14),
      axis.title.x = element_text(vjust=-0.2),
      axis.title.y = element_text(vjust=+0.6),
      axis.title=element_text(size=16,face="bold"),
      legend.justification = c(1, 1), legend.position = c(1, 1),
      legend.title=element_text(size=14),
      legend.text=element_text(size=12))

enter image description here

I have been trying to alter the x axis tick intervals to every month, to read: July, August, September, October, November, December, January, February, March. As you can see I have succesfully manually edited my y axis. I have read many posts on changing x axis ticks but I can't seem to find a solution to my particular problem. Any assistance would be greatly appreciated.

2

2 Answers

42
votes

Upgrade comment

You can change the x-axis labels using scale_x_date and formats from the scales package. Using the code from the ggplot2 scale_x_date help pages

library(ggplot2)
library(scales) # to access breaks/formatting functions

# Change Date to date format
aaci$dt <- as.Date(aaci$Date)

# Plot
# You can change the format to suit your requirements
ggplot(aaci, aes(x=dt, y=Average, colour=Species, group=Species)) +
      geom_point(size=4) +
      geom_line(size=1.3) + 
      scale_y_continuous(limits = c(0,100), breaks=seq(0,100,10)) + 
      scale_x_date(date_breaks = "months" , date_labels = "%b-%y")

enter image description here

1
votes

Have you tried this:

> p + opts(axis.text.x=theme_text(angle=-90))

making the ticks vertical sometimes makes all text fit and therefore appear.