自定义x轴刻度

时间:2013-07-20 16:17:16

标签: r ggplot2

就记录而言,我有一个非常大的数据框(2列)。我在ggplot2中绘制了图表。 X轴是时间,Y轴是值。在从50到60的特定时间间隔内,我想使得滴答增量更小,例如(50,51,51,53,... 59,60)。对于轴的其余部分,将刻度增加10可以。因此,我希望X轴的值如下:

10,20,30,40,50,51,52,53,54,55,56,57,58,58,60,70,80,90,..190,200.

我知道,我可以使用scale_x_continuousbreaks修改minor_breaks的代码。但是,我没有得到预期的输出。这是我的尝试:(注意:例如,因为我的数据非常大,所以创建了数据)。

data:
-----
x<-seq(1:200)
y<-seq(51,250,by=1)
df<-data.frame(x=x,y=y)

code:(Update based on @Didzis Elferts suggestion) 
-----
ggplot(data=df, aes(x,y))+geom_line(size=1.6)+ 
   scale_x_continuous( breaks=c(10,20,30,40,seq(50,60,by=2),seq(70,200,10))
                       ,minor_breaks=seq(50,60,by=2) )+
   +theme(axis.text.x=element_text(size=16),axis.text.y=element_text(size=16))+
   +theme(axis.title.x=element_text(size=16),axis.title.y=element_text(size=16))+ 
   +theme(axis.ticks.x = element_line(size = 1))+xlab("Time")+ylab("value")
   +theme(axis.ticks.length=unit(0.8,"cm"))

根据下面的建议,现在唯一的问题是在50-60之间的间隔期间X轴的值没有明显出现。 sample of O/P 任何建议,以明确!!

1 个答案:

答案 0 :(得分:21)

使用参数minor_breaks=设置次要网格线。要在x轴下设置数字,所有数字都应该带有参数breaks=

ggplot(data=df, aes(x,y))+geom_line(size=1.6)+ 
  scale_x_continuous(breaks=c(10,20,30,40,seq(50,60,by=1),seq(70,200,10)),
          minor_breaks=seq(50,60,by=1))

对于第二个问题 - 您在axis.ticks.x=element_line(size=5)内设置了theme() - 这使得您的轴更宽,因此它们显示为小矩形。如果您想使轴刻度更长,请使用axis.ticks.length=

+theme(axis.ticks.length=unit(0.5,"cm"))