首页 > 解决方案 > 基于ggplot r中数字大小的刻度标签中小数的条件格式

问题描述

在我的 ggplot x 轴刻度标签中,我想将 0 到 1 之间的数字格式化为小数点后一位(如 0.1、0.2、0.5 等),但如果数字为 1 或更大,我只想将数字显示为一个整数 (1,2,3,4)。

我还想在最后用 X 格式化刻度标签,以表示标签是乘数。X 轴刻度标签的理想结果如下所示

0.1X 0.2X 0.5X 1X 2X 3X 4X

这是示例数据集的最小示例

set.seed(42)
data.frame(exp=rexp(100,5)*10) %>%
  ggplot(aes(x=exp)) +
  geom_density() +
  scale_x_log10(breaks = c(0.1, 0.2, 0.3, 0.5, 1, 2, 4, 6))

在此处输入图像描述

我看到了这个答案,但我不知道如何使它与我的 x 轴一起工作。

标签: rggplot2

解决方案


您需要 1 个有效数字,因此您可以使用signif()

data.frame(exp=rexp(100,5)*10) %>%
    ggplot(aes(x=exp)) +
    geom_density() +
    scale_x_log10(breaks = c(0.1, 0.2, 0.3, 0.5, 1, 2, 4, 6), 
                  labels = function(b) paste0(signif(b, 1), "X"))

推荐阅读