gpt4 book ai didi

R ggplot2 : using stat_summary (mean) and logarithmic scale

转载 作者:行者123 更新时间:2023-12-04 12:26:03 27 4
gpt4 key购买 nike

随着时间的推移,我有一堆测量值,我想在 R 中绘制它们。这是我的数据示例。对于 4 个时间点,我有 6 个测量值:

values <- c (1012.0, 1644.9, 837.0, 1200.9, 1652.0, 981.5, 
2236.9, 1697.5, 2087.7, 1500.8,
2789.3, 1502.9, 2051.3, 3070.7, 3105.4,
2692.5, 1488.5, 1978.1, 1925.4, 1524.3,
2772.0, 1355.3, 2632.4, 2600.1)
time <- factor (rep (c(0, 12, 24, 72), c(6, 6, 6, 6)))

这些数据的规模是任意的,实际上我将对其进行标准化,以便 t=0 的平均值为 1。
norm <- values / mean (values[time == 0])

到现在为止还挺好。使用 ggplot ,我绘制了各个点,以及通过每个时间点的平均值的线:
require (ggplot2)
p <- ggplot(data = data.frame(time, norm), mapping = aes (x = time, y = norm)) +
stat_summary (fun.y = mean, geom="line", mapping = aes (group = 1)) +
geom_point()

但是,现在我想应用对数刻度,这就是我遇到麻烦的地方。当我做:
q <- ggplot(data = data.frame(time, norm), mapping = aes (x = time, y = norm)) +
stat_summary (fun.y = mean, geom="line", mapping = aes (group = 1)) +
geom_point() +
scale_y_log2()

这条线在 t=0 时不会通过 0,正如您所期望的,因为 log (1) == 0。相反,这条线穿过 y 轴略低于 0。显然, ggplot应用对数转换后的平均值,这给出了不同的结果。我希望它在对数转换之前取平均值。

我怎么知道 ggplot先应用平均值?有没有更好的方法来创建这个图表?

最佳答案

scale_y_log2()将首先进行转换,然后计算几何。
coord_trans()将做相反的事情:首先计算几何图形,然后变换轴。

所以你需要coord_trans(ytrans = "log2")而不是 scale_y_log2()

关于R ggplot2 : using stat_summary (mean) and logarithmic scale,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3387824/

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