【问题标题】:Customise x-axis ticks自定义 x 轴刻度
【发布时间】:2013-07-19 19:18:42
【问题描述】:

就记录而言,我有一个非常大的数据框(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.

我知道,我可以使用breaksminor_breaks 修改通过scale_x_continuous 的刻度。但是,我没有得到预期的输出。这是我的尝试:(注意:创建数据只是因为我的数据非常大)。

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

根据下面的建议,现在唯一的问题是X轴在50-60之间的值没有清楚地出现。 有什么建议可以说清楚!!

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    使用参数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"))
    

    【讨论】:

    • 你是对的。但是,在我应用您的建议后,小中断的值重叠了。我看不到值。我们可以增加每个次要刻度之间的空间,以便可以读取值。也许如果我们改变字体或角度?
    • 你不能直接增加矿工休息之间的空间。还可以同时更改所有 x 轴标签的字体大小和角度。
    • @SimpleNEasy,这些值重叠,因为您的小中断太靠近:minor_breaks=seq(50,60,by=2)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 2017-09-26
    相关资源
    最近更新 更多