当x轴的值为日期时更改刻度间隔

34
抱歉如果这个问题很容易解决,但是我无法理解它。
我有这个数据框:
> 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

我正在使用这段代码来生成一个图表:

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))

在这里输入图像描述

我一直在尝试将x轴刻度间隔更改为每个月,以便阅读:7月、8月、9月、10月、11月、12月、1月、2月和3月。如您所见,我已成功手动编辑了我的y轴。我已阅读了许多关于更改x轴刻度的帖子,但似乎找不到解决我的特定问题的方法。任何帮助将不胜感激。


http://docs.ggplot2.org/current/scale_date.html 可能会有所帮助。 - user20650
2个回答

57

升级评论

您可以使用scale_x_date并从scales包中获取格式来更改x轴标签。使用ggplot2 scale_x_date帮助页面中的代码。

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")

在此输入图片描述


1
感谢您的编辑,@Antarqui。(关于您的编辑主题:仍然可以使用breaks/labels参数(即date_breaks和date_label不是必需的),但我在这种情况下绝对同意新语法更加简洁) - user20650
1
谢谢您的回答。我正在运行R3.5.1版本,使用ggplot2的开发版本,当我尝试使用breaks/labels参数时,它没有起作用。 - Antarqui

1

你试过这个吗:

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

有时将刻度线垂直排列可以使所有文本都适合并因此显示出来。


感谢您的输入,但不幸的是,那似乎并不能解决这个问题。 - opalfruits

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接