【问题标题】:Plot with ticks at different levels绘制不同级别的刻度
【发布时间】:2017-04-11 22:33:05
【问题描述】:

我想知道是否可以将刻度标签放在两个不同的级别以避免标签之间的重叠。 例如这里:

a=c[1:10]
b=c("January","February","March","April","May","June","July","August","September","October")
barplot(a,space=0,axes=F)
ticks=a
axis(side=1, at =ticks, labels=b)

【问题讨论】:

    标签: r plot labels


    【解决方案1】:

    您可以尝试以下方法:

    a=1:10
    b=c("January","February","March","April","May","June","July","August","September","October")
    barplot(a,space=0,axes=F)
    ticks=a
    
    # indices of even ticks
    idx <- seq(2, length(ticks), 2) 
    
    # b2 only contains the odd labels.
    b2 <- b
    # Empty space so a small line gets drawn at omitted labels
    b2[idx] <- ""
    
    # draw odd labels
    axis(side=1, at =ticks, labels=b2, line = 0)
    # same command for even ticks, lwd = 0 suppresses drawing the x-axis twice
    axis(side=1, at =ticks[idx], labels=b[idx], line = 1, lwd = 0)
    

    这基本上避免了重叠,首先在奇数位置绘制标签,然后在偶数位置绘制标签,但由于line = 1而略低。

    【讨论】:

      【解决方案2】:

      您可以尝试拨打两个axis 电话,一个用于奇数月,一个用于偶数月,然后将它们放在不同的line 上。第一个axis 调用只是简单地绘制刻度,没有标签。

      a=1:10
      a_even <- a[a %% 2==0]
      a_odd <- a[a %% 2==1]
      b=c("January","February","March","April","May","June","July","August","September","October")
      barplot(a,space=0,axes=F)
      ticks=a
      axis(side=1, at =ticks, labels=FALSE,line = 1)
      axis(side=1, at =ticks[a_odd], labels=b[a_odd],line = 1,tick = FALSE)
      axis(side=1, at =ticks[a_even], labels=b[a_even],line = 2,tick = FALSE)
      

      【讨论】:

        猜你喜欢
        • 2019-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-29
        • 2014-01-22
        • 1970-01-01
        • 2015-05-13
        • 2016-09-29
        相关资源
        最近更新 更多