首页 > 解决方案 > ggplot - 定义小数位的对数轴标签

问题描述

我有一些数据具有相当大的值并且分布在很大的值范围内。因此,我想以对数刻度显示数据。我找到了包裹scales并设法得到了这个情节:

在此处输入图像描述

有了这个虚拟数据:

dummy <- data.frame(
  x = "A",
  y = 10^runif(100, min = 1, max = 2.5)
)

而这段代码:

ggplot(data = dummy, aes(x = x, y = y)) +
  geom_boxplot() +
  scale_y_continuous(
    trans = log10_trans(),
    breaks = trans_breaks("log10", function(x) 10^x),
    labels = trans_format("log10", math_format(10^.x))
  ) +
  theme(
    text = element_text(size = 16)
  )

但是,我希望上标中的数字始终具有相同的小数位数,比如说 1。我怎样才能做到这一点ggplot2?我试图添加format(..., nsmall = 1)标签参数的不同部分,但这不起作用。看来我不是很了解这个trans_format()功能。谁能帮我?

例如:我希望轴标记为 10 2.0,而不是 10 2

标签: rggplot2

解决方案


可能不是一个很有帮助的答案,但也许这个方向的一些东西会有所帮助:

dummy <- data.frame(
  x = "A",
  y = 10^runif(100, min = 1, max = 2.5)
)



ggplot(data = dummy, aes(x = x, y = y)) +
  geom_boxplot() +
  scale_y_continuous(
    trans = log10_trans(),
    breaks = trans_breaks("log10", function(x)
      10 ^ x),
    labels = function(y){sprintf("10^%.1f", y)}
  ) +
  theme(text = element_text(size = 16),
        axis.text = element_markdown())

这给出了这个:

在此处输入图像描述


推荐阅读