gpt4 book ai didi

r - 如何使用 ggplot2 限制 stat_function 图的范围?

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

我正在尝试使用以下代码创建一个图形来显示不同的饱和度及其对演讲采样动态的影响:

max <- 2
decay <- function(x, k, C) {
C * (1 - exp(-k*x))
}
require("ggplot2")
ggplot(NULL, aes(x=x, colour = C)) +
stat_function(data = data.frame(x = 0:max, C = factor(1)), fun = function(x) { decay(x, k=10, C=1e1) }) +
stat_function(data = data.frame(x = 0:max, C = factor(2)), fun = function(x) { decay(x, k=10, C=1e2) }) +
stat_function(data = data.frame(x = 0:max, C = factor(3)), fun = function(x) { decay(x, k=10, C=1e3) }) +
stat_function(data = data.frame(x = 0:max, C = factor(4)), fun = function(x) { decay(x, k=10, C=1e4) }) +
stat_function(data = data.frame(x = 0:max, C = factor(5)), fun = function(x) { decay(x, k=10, C=1e5) }) +
stat_function(data = data.frame(x = 0:max, C = factor(6)), fun = function(x) { decay(x, k=10, C=1e6) }) +
scale_colour_manual(values = c("red", "orange", "yellow", "green", "blue", "violet"), labels = c(1, 2, 3, 4, 5, 6)) + scale_colour_discrete(name=expression(paste(C, " value"))) +
ylab(label="count") + ylim(0, 100)

目的是表明对于高 C 值情况,曲线将呈现线性。但是,当我希望它仅在最大值处截断曲线时,ylim 会阻止显示任何大于 ylim 最大值的曲线。

如何获得所需的行为?

最佳答案

您已经注意到限制规模(使用scale_y_continuous(limits=...))之间的区别或限制坐标空间(使用coord_cartesian(ylim=...)

当您调用 ylim 时,它会使用 scale_y_continuous 的等效项,并删除不在范围内的观测值

ylimxlim 的帮助对此进行了描述(并指出 coord_cartesian 作为替代方案)

# here is your example rewritten
ggplot(data = NULL, aes(x=x,colour=C)) +
lapply(1:6, function(y){
stat_function(data = data.frame(x=0:max,C=factor(y)),
fun = function(x) decay(x,k=10, C = 10^y))) +
scale_colour_manual(values = c("red", "orange", "yellow", "green", "blue", "violet"),
labels = c(1, 2, 3, 4, 5, 6)) +
scale_colour_discrete(name=expression(paste(C, " value"))) +
ylab(label="count") +
coord_cartesian(ylim = c(0,100))

关于r - 如何使用 ggplot2 限制 stat_function 图的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24275918/

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