gpt4 book ai didi

r - 在 R 中使用对数刻度上的 stat_function 绘图

转载 作者:行者123 更新时间:2023-12-01 07:57:43 26 4
gpt4 key购买 nike

我在尝试了解 R 的 ggplot2 中的 stat_function 时遇到了严重的问题。我从这个简单的例子开始:

ggplot(data.frame(x = c(1, 1e4)), aes(x)) + stat_function(fun = function(x) x)

按预期工作。不幸的是,当我为 x 和 y 轴添加对数刻度时:

ggplot(data.frame(x = 1:1e4), aes(x)) +
scale_x_log10() +
scale_y_log10() +
stat_function(fun = function(x) x)

我得到以下结果,这是对恒等函数的严重违反。 enter image description here

我缺少一些非常基本的东西吗?那么,在对数尺度上绘制函数的正确且最简单的方法是什么?

编辑:受到答案的启发,我继续尝试了尺度和 aesthetics 参数。使用下面的代码发现我得到了我期望的结果,我更加困惑:

ggplot(data.frame(x = 1:1e4, y = 1:1e4), aes(x, y)) +
scale_x_log10() +
scale_y_log10() +
stat_function(fun = function(x) x)

具有明显未使用的 y 值向量(即 stat_function 未使用)。轴转换是否取决于数据的可用性?

最佳答案

当您使用 scale_x_log10() 时,x 值会被对数转换,然后才用于使用 计算 y 值stat_function()。然后将 x 值反向转换为原始值以进行缩放。 y 值保留为从对数转换的 x 计算得出的值。您可以通过绘制不带 scale_y_log10() 的值来检查这一点。在情节中有一条直线。

ggplot(data.frame(x=1:1e4), aes(x)) +
stat_function(fun = function(x) x) +
scale_x_log10()

如果你应用 scale_y_log10() 你记录变换已经计算的 y 值,所以曲线被绘制。

关于r - 在 R 中使用对数刻度上的 stat_function 绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15144998/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com