【问题标题】:Inverse of 200000^x in RR中200000^x的倒数
【发布时间】:2020-01-16 17:52:29
【问题描述】:

我想用 ggplot 绘制一个辅助轴,我将原始数据乘以 200000^[整列],它的倒数是什么?

scale_y_continuous(sec.axis = sec_axis(~.  ) )

【问题讨论】:

  • 如果y=a^x 那么x = log(y) / log(a)。
  • “乘以”还是“替换为”?前者建议x * (200000^x)。

标签: r math scale inverse


【解决方案1】:

使用 Nico 的数学,这是一个使用逆运算的工作示例:

set.seed(2)
z <- data.frame(x=1:100, y=200000^runif(100, 10, 11))

ggplot(z, aes(x, y)) +
  geom_point() +
  scale_y_continuous(
    sec.axis = sec_axis(~ log(.) / log(200000), breaks=c(10.1,10.9, 10.95)),
    expand = c(0,0)
  )

我不得不使用expand=c(0,0),因为轴的扩展(通常用于上下文和剪辑)导致负值,即使数据中没有负值。这些否定会导致警告,因此如果您不介意警告,则可以将其排除。 (可能有其他方法可以处理这种现象,也许对于你的数据来说它们不是必需的。)

编辑:我添加了breaks=。请注意,breaks= 和 labels= 可以用数值或函数作为输入覆盖,因此您不需要像我在这里所做的那样对值进行硬编码。

【讨论】:

  • 是否可以让正确的 Y 轴分散 Y 轴而不是聚集在一起?在此先感谢。假设我想将 Y 轴的左侧转换为 2 的对数基数?
  • 当然,如果您阅读?sec_axis,它同时具有breaks= 和labels= 参数(与“正常”轴函数参数的功能相同)。 (见我的编辑。)
  • 谢谢!我的数据点主要位于 log 2 的基础上,当我尝试在左侧 Y 轴上使用 trans = log2_trans() 时,我收到错误“if (max == min) return(base^min) 中的错误:需要 TRUE/FALSE 的缺失值”,关于如何避免这种情况的任何想法?
  • 这个错误几乎总是因为你的条件((max==min) 这里)长度为 0。检查它是否总是长度为 1。我在任何地方都找不到 log2_trans。
猜你喜欢
  • 2011-08-08
  • 2011-05-18
  • 2022-11-26
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多