美文网首页
10. ggplot2坐标轴刻度位置(breaks)和标签(la

10. ggplot2坐标轴刻度位置(breaks)和标签(la

作者: 心惊梦醒 | 来源:发表于2022-09-30 18:43 被阅读0次

      axis tick marks和legend tick marks是scale breaks的特殊案例,通过scale函数的breaks参数设置。

    主要刻度

      每个break对应一条major gridline,两个主要网格线之间有一条minor gridline,对应minor breaks。breaks参数用来设置主要刻度标签的位置,minor_breaks参数用来设置次要刻度标签的位置。

    • breaks=NULL:无主要刻度标签,并删除对应的网格线
    • breaks=由transformation object计算的默认breaks:默认trans=identity,坐标轴就是一个数轴。我理解的是就像地图中的比例尺一样,"真实"的数值与ggplot坐标轴上的数值存在一个倍数直线线性关系。
    • breaks=手动设置的向量;这种情况最容易理解和操作,你可以在数轴上任意标注breaks
    • breaks=函数:提供的函数需要能接受一个二值向量(即limits的范围),最后返回breaks,scales包提供了几个有用的工具:
      • scales::breaks_extended(n=5,...):用Wilkinson's extended breaks algorithm进行break
      • scales::breaks_log(n=5,base=10):以limits=c(1,100000),n=5,base=10为例,大概计算过程为:step1)raw_rng=range(limits);step2)rng <- log(raw_rng, base = base);step3)max<-ceiling(rng[2]);min<-floor(rng[1]);by <- floor(max - min)/n) + 1;step4)breaks <- base^seq(min, max, by = by),最终呈现的效果是坐标轴上有多个视觉上等间隔的breaks,但对应的不是等步长的值。
      • scales::breaks_width(width,offset=0):在numeric、date、date-time scales上都很有用;width为每个break之间的距离,offset为偏移量,也可以是一个向量。
      • scales::breaks_pretty(n=5,...):用pretty()算法,原生对date/times有用。

    注意:以上这些函数,设置的n与最终得到的breaks的数目不一定完全一致。

    次要刻度

      次要刻度标签的位置对log scales很有用,因为它提示scale是非线性的。同breaks一样,minor_breaks可以设置为:

    • minor_breaks=NULL:删除次要刻度标签
    • minor_breaks=默认:两个主要刻度之间有一个次要刻度
    • minor_breaks=手动设置的向量
    • minor_breaks=函数:例如:scales::minor_breaks_n(n)scales::minor_breaks_width(width, offset)[小坑,测试不通过]

    刻度标签

      每个break与一个label关联,可以通过labels参数修改labels,所以breakslabels参数对应的向量长度应保持一致。
      scales包也提供了一系列函数来格式化labels。包括:scales::label_bytes()scales::label_comma()scales::label_dollar()scales::label_ordinal()scales::label_percent()scales::label_pvalue()。从这些函数的名字就可以看出其基本功能,使用的时候直接查看函数帮助即可,非常方便。

    三者之间的关系

      minor_breakslabels都依赖breaks,三者设置为NULL时的区别是:breaks=NULL会删除主要刻度、次要刻度以及labels,其他两者则只会删除对应属性。

    df <- data.frame(a=1:5,b=c(1,10,100,1000,10000))
    p<-ggplot(df,aes(a,b)) + geom_point()
    p1<- p + labs(title="scale_y_continuous()")
    p2 <- p + scale_y_continuous(breaks=NULL) + labs(title="scale_y_continuous(breaks=NULL)")
    p3 <- p + scale_y_continuous(minor_breaks=NULL) + labs(title="scale_y_continuous(minor_breaks=NULL)")
    p4 <- p + scale_y_continuous(labels=NULL) + labs(title="scale_y_continuous(labels=NULL)")
    

    相关文章

      网友评论

          本文标题:10. ggplot2坐标轴刻度位置(breaks)和标签(la

          本文链接:https://www.haomeiwen.com/subject/zxfznrtx.html