gpt4 book ai didi

r - ggplot2 相当于基本图中的lines()函数

转载 作者:行者123 更新时间:2023-12-02 00:07:49 25 4
gpt4 key购买 nike

出于我不会讨论的原因,我需要在空白的 ggplot2 图上绘制垂直正态曲线。以下代码将其作为一系列具有 x,y 坐标的点来完成

dfBlank <- data.frame()

g <- ggplot(dfBlank) + xlim(0.58,1) + ylim(-0.2,113.2)

hdiLo <- 31.88
hdiHi <- 73.43
yComb <- seq(hdiLo, hdiHi, length = 75)
xVals <- 0.79 - (0.06*dnorm(yComb, 52.65, 10.67))/0.05
dfVertCurve <- data.frame(x = xVals, y = yComb)

g + geom_point(data = dfVertCurve, aes(x = x, y = y), size = 0.01)

曲线清晰可见,但它是一系列点。基本图中的lines()函数会将这些点变成一条平滑的线。

有 ggplot2 等效项吗?

最佳答案

我看到有两种不同的方法。

geom_segment

第一个使用 geom_segment 将每个点与其下一个点“链接”。

hdiLo <- 31.88
hdiHi <- 73.43
yComb <- seq(hdiLo, hdiHi, length = 75)
xVals <- 0.79 - (0.06*dnorm(yComb, 52.65, 10.67))/0.05
dfVertCurve <- data.frame(x = xVals, y = yComb)


library(ggplot2)
ggplot() +
xlim(0.58, 1) +
ylim(-0.2, 113.2) +
geom_segment(data = dfVertCurve, aes(x = x, xend = dplyr::lead(x), y = y, yend = dplyr::lead(y)), size = 0.01)
#> Warning: Removed 1 rows containing missing values (geom_segment).

正如您所看到的,它只是链接您创建的点。最后一点没有下一点,因此最后一段被删除(请参阅警告)

统计函数

第二个,我认为更好,更接近ggplotish,利用stat_function()

library(ggplot2)
f = function(x) .79 - (.06 * dnorm(x, 52.65, 10.67)) / .05

hdiLo <- 31.88
hdiHi <- 73.43
yComb <- seq(hdiLo, hdiHi, length = 75)

ggplot() +
xlim(-0.2, 113.2) +
ylim(0.58, 1) +
stat_function(data = data.frame(yComb), fun = f) +
coord_flip()

这构建了一个正确的函数(y = f(x)),并绘制它。请注意,它是在 X 轴上构建然后翻转的。因此,xlimylim 是颠倒的。

关于r - ggplot2 相当于基本图中的lines()函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43325615/

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