- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用 geom_line 和 geom_ribbon 创建了一个图(图 1),结果还不错,但为了美观,我希望线条和丝带更平滑。我知道我可以使用 geom_smooth 作为线条(图 2),但我不确定是否可以平滑功能区。我可以为功能区的顶线和底线创建一条 geom_smooth 线(图 3),但是有什么办法可以填充这两行之间的空间吗?
最佳答案
实现您想要的目标的原则性方法是使用 mgcv 中的 gam() 函数将 GAM 模型拟合到您的数据,然后在预测变量值的更精细网格上将 Predict() 函数应用于该模型。网格可以覆盖由预测变量的观测值范围定义的跨度。下面的 R 代码通过一个具体示例说明了此过程。
# load R packages
library(ggplot2)
library(mgcv)
# simulate some x and y data
# x = predictor; y = response
x <- seq(-10, 10, by = 1)
y <- 1 - 0.5*x - 2*x^2 + rnorm(length(x), mean = 0, sd = 20)
d <- data.frame(x,y)
# plot the simulated data
ggplot(data = d, aes(x,y)) +
geom_point(size=3)
# fit GAM model
m <- gam(y ~ s(x), data = d)
# define finer grid of predictor values
xnew <- seq(-10, 10, by = 0.1)
# apply predict() function to the fitted GAM model
# using the finer grid of x values
p <- predict(m, newdata = data.frame(x = xnew), se = TRUE)
str(p)
# plot the estimated mean values of y (fit) at given x values
# over the finer grid of x values;
# superimpose approximate 95% confidence band for the true
# mean values of y at given x values in the finer grid
g <- data.frame(x = xnew,
fit = p<span class="math-container">$fit,
lwr = p$</span>fit - 1.96*p<span class="math-container">$se.fit,
upr = p$</span>fit + 1.96*p$se.fit)
head(g)
theme_set(theme_bw())
ggplot(data = g, aes(x, fit)) +
geom_ribbon(aes(ymin = lwr, ymax = upr), fill = "lightblue") +
geom_line() +
geom_point(data = d, aes(x, y), shape = 1)
如果您要使用 lm() 函数将多项式回归模型拟合到数据,则同样的原则也适用。
关于ggplot2 - 平滑 geom_ribbon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61029929/
嗨,我得到了一个具有以下结构的数据框weekly.mean.values: week:mean:ci.lower:ci.upper 其中周是一个因素; mean、ci.lower 和 ci.upper
我希望绘制两个时间序列,并根据当时哪个系列较大来对系列之间的空间进行着色。 这是两个系列——首先在一个数据框中,其中包含当时较大的系列的指示符 d1 <- read.csv("https://dl.d
我用 geom_line 和 geom_ribbon 创建了一个图(图 1),结果还不错,但为了美观,我希望线条和丝带更平滑。我知道我可以使用 geom_smooth 作为线条(图 2),但我不确定是
我有以下ggplot2绘制从第三个四分位数到第 97 个四分位数的功能区的代码: h <- ggplot(l, aes(x=age[limit])) h <- h + geom_ribbon(aes(
鉴于以下数据: df<-data.frame( year=(1996:2000), a=c(2,1.5,1.5,2,3), b=c(2,2,2,3,4), c=c(2,3,3,1,1)
我想绘制一个 geom_ribbon()在那里我根据变量来设置波段的颜色。 例子: library(dplyr) library(ggplot2) df <- tribble( ~year, ~l
我正在跟进讨论开始于:How can I make geom_area() leave a gap for missing values? .似乎 geom_ribbon 不再为缺失值留下空白。请尝试
我正在尝试在 ggplot2 中为色带着色。使用 geom_ribbon 时,我可以指定 ymin 和 ymax 以及填充颜色。它现在所做的是为 ymin 和 ymax 之间的所有内容着色,而不考虑上
这段代码抛出一个错误,我不知道为什么... library( plyr ) library( ggplot2 ) library( grid ) library( proto ) # the mast
我正在尝试根据 x 值对 geom_ribbon 使用不同的填充(对于 Temp = 0-20 一个填充,20-30.1 另一个填充和 > 30.1 另一个填充)。我正在使用以下代码 library(
我想删除使用 geom_ribbon 创建的图例中的填充。注意 these answers不要解决这个特定问题。 最小工作示例 library(ggplot2) library(ggeffects)
对先前提出的问题 ( Plotting depth range in 'time-series' using ggplot ) 进行跟进,但完全相同。 使用 ggplot 我想要一个图来显示特定个体(
我正在处理来自所有 50 个州的数据。我正在尝试绘制小型多折线图,其中一条线是州(蓝色),另一条线是全国平均水平(灰色)。 这是缅因州的一个例子: 这是我的缅因州数据框的样子: 我试图将州界线低于全国
我有以下代码(作为示例),我想对其进行调整,以使功能区扩展到整个 xrange,如 geom_hline()做。功能区指示哪些值在可接受的范围内。在我的实际应用程序中,有时没有上限或下限,因此 hli
我在回答 this question ,这需要绘制平滑区域,但删除“无用”区域。在一个简单的 geom_area 上做到这一点(不流畅),我只用 geom_ribbon与 aes(ymax=y, ym
使用 highcharter , 有没有办法复制 geom_ribbon形成 ggplot2? 最佳答案 是的,它叫做arearange。您可以查看 https://cran.r-project.or
我想重现 ggplot 样式,使用带状的值显示置信区间,例如 geom_ribbon 或 geom_smooth。 我尝试分别计算置信区间并使用 fill_between() 进行绘图,这很接近但似乎
我正在尝试使用 绘制一些具有“置信区间”的数据的 ECDF,通过阴影区域表示。 ggplot2 .我在合并时遇到问题 geom_ribbon()与 stat_ecdf()达到我追求的效果。 考虑以下示
我正在使用 ggplot,并试图将一个简单矩形形式的功能区添加到我拥有的条形图中。这个想法是显示低于某个值的截止值。 条形图很好,但我不能完全正确地使用功能区 - 我希望它显示得更宽一些,但它似乎仅限
如何将 y=0 和数据点之间的区域着色为绿色?目前它正在为整个 y [0:1] 着色 Variable 0) { outx <- c(outx, x[i]) outy <- c
我是一名优秀的程序员,十分优秀!