- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以让geom_smooth产生单调递减函数?
第一个例子看起来是单调递减的:
library(tidyverse)
df <- structure(list(x = c(-55, 11, 19, 123, 133, 123, 123, 2, 86,
84, 179, 179, 179, 179, 25, 85, 84, 179, 179, 179, 179, 25, 86,
84, 179, 179, 179, 179, 25, 86, 84, 179, 179, 179, 179, 25, 86,
70, 123, 123, 123, 123, 0, -45, -45, -17, -17, -17, -17, -63,
48, 40, 67, 67, 67, 67, -25, 11, 10, 67, 67, 67, 67, -25, 11,
10, 67, 67, 67, 67, -25, 11), y = c(126, -29, -37, -63, -76,
-70, -58, 23, -17, -26, -74, -72, -70, -73, 6, -24, -10, -54,
-67, -59, -59, 27, -37, -12, -51, -69, -61, -58, 52, -52, -25,
-46, -64, -54, -55, 41, -11, -22, -48, -63, -57, -56, 34, 17,
56, -26, -13, -16, -25, 99, -39, -16, -54, -74, -52, -60, 9,
-32, -17, -62, -66, -50, -65, 60, -34, -24, -62, -76, -62, -58,
27, -36)), row.names = c(NA, -72L), class = "data.frame")
ggplot(df) + geom_point(aes(x, y)) + geom_smooth(aes(x, y))
第二个例子看起来并不单调:
df <- structure(list(x = c(33, -14, -14, -15, -10, -33, 2, 28, -33,
-33, -33, -33, -48, -22, 0, 33, 33, 33, 33, 3, 37, 75, 17, 17,
17, 17, 8, 95, 151, 67, 67, 67, 67, 31, 95, 151, 67, 67, 67,
67, 31, 95, 151, 67, 67, 67, 67, 31, 95, 151, 67, 67, 67, 67,
31, 95, 151, 67, 67, 67, 67, 31, 95, 139, 50, 50, 50, 50, 16,
56, 101, 33), y = c(-50, 75, 77, 137, 36, 97, -42, -67, 147,
163, 176, 132, 384, 100, 65, -17, -53, -11, -49, -48, -77, -87,
-25, -23, -11, 4, -45, -54, -81, -36, -19, 3, -26, -6, -68, -74,
-11, -21, 32, -28, -19, -41, -74, -36, -33, 47, -4, -35, -52,
-69, -8, 47, 0, -45, 26, -48, -71, 19, 14, 18, -40, -71, -44,
-61, 19, 5, -16, 15, 29, -48, -72, 0)), row.names = c(NA, -72L
), class = c("tbl_df", "tbl", "data.frame"))
ggplot(df) + geom_point(aes(x, y)) + geom_smooth(aes(x, y))
您可以看到函数下降,然后在 x = 25 到 65
之间上升,然后再次下降。这不好 - 函数永远不能随着 x 的增加而增加。
我也尝试过使用 nls()
和单调递减函数,例如 y ~ 1/x
或 y ~ exp(1/x)
但由于我有数以千计的数据集,所以未能找到自动查找起始值的有效方法。 geom_smooth 似乎在许多情况下都能很好地工作,除了第二个示例中的凹凸情况。
最佳答案
如果你只是想要一个漂亮的曲线,那么你可以使用这个:
library(tidyverse)
df <- structure(list(x = c(33, -14, -14, -15, -10, -33, 2, 28, -33,
-33, -33, -33, -48, -22, 0, 33, 33, 33, 33, 3, 37, 75, 17, 17,
17, 17, 8, 95, 151, 67, 67, 67, 67, 31, 95, 151, 67, 67, 67,
67, 31, 95, 151, 67, 67, 67, 67, 31, 95, 151, 67, 67, 67, 67,
31, 95, 151, 67, 67, 67, 67, 31, 95, 139, 50, 50, 50, 50, 16,
56, 101, 33), y = c(-50, 75, 77, 137, 36, 97, -42, -67, 147,
163, 176, 132, 384, 100, 65, -17, -53, -11, -49, -48, -77, -87,
-25, -23, -11, 4, -45, -54, -81, -36, -19, 3, -26, -6, -68, -74,
-11, -21, 32, -28, -19, -41, -74, -36, -33, 47, -4, -35, -52,
-69, -8, 47, 0, -45, 26, -48, -71, 19, 14, 18, -40, -71, -44,
-61, 19, 5, -16, 15, 29, -48, -72, 0)), row.names = c(NA, -72L
), class = c("tbl_df", "tbl", "data.frame"))
plot = ggplot(df) +
geom_point(aes(x, y)) +
geom_smooth(aes(x, y),
method = "lm",
formula = y ~ log(x-min(df$x)-1),
se = FALSE)
print(plot)
因为你有负值,我只是以一种笨拙的方式强加了一条对数回归线,但它至少会出现一条漂亮的曲线......
关于R ggplot2 geom_smooth - 单调平滑函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51788043/
出于某种原因,在我的图表中,geom_smooth 线的颜色与阴影区域不同。我不确定是什么原因造成的。例如,蓝色阴影的 Retired 有一条绿线,而绿色阴影的 Unsigned 有一条蓝线。事件状态
我有以下 ggplot2 代码,可以绘制不同阶数的多个多项式拟合: library(ggplot2) set.seed(1234) n = 400 x = rnorm(n, sd=0.4) y = -
如何制作 ggplot 图 geom_smooth(method="lm"),但前提是它符合某些标准?例如,如果我只想在斜率具有统计显着性的情况下画线(即 lm 拟合中的 p 小于 0.01)。 编辑
我在 R 中计算了二项式回归: Call: glm(formula = cbind(success, failure) ~ x * f, family = "binomial", data =
这是一些数据和情节: set.seed(18) data = data.frame(y=c(rep(0:1,3),rnorm(18,mean=0.5,sd=0.1)),colour=rep(1:2,1
我正在使用 ggplot2 中的 geom_smooth()。 在 Hadley Wickham 的书(“ggplot2 - Elegant Graphics for Data Analysis”)中
您可以非常轻松地在 ggplot2 中扩展回归线: c =init_range[1]] ggplot2:::predictdf.default(model, xseq[-length(xseq
在查看this时问题,我无法为 geom_smooth 指定自定义线性模型。我的代码如下: example.label <- c("A","A","A","A","A","B","B","B","B"
我正在努力使用 geom_smooth 来创建几何平滑线。下面我报告代码: library(ggplot2) #DATAFRAME RawData <- data.frame("Time" = c(0
是否可以让geom_smooth产生单调递减函数? 第一个例子看起来是单调递减的: library(tidyverse) df <- structure(list(x = c(-55, 11, 19,
这个问题在这里已经有了答案: ggplot - Add regression line on a boxplot with binned (non-continuous) x-axis (1 个回答)
我正在绘制一些数据并具有以下代码: ggplot(aes(x = x, y = y), data = data) + geom_point(alpha = 1/15, color = 'blue'
我想用ggplot2建立一个情节。因此,我使用geom_line来可视化线,并使用geom_smooth来显示特定索引的最小-最大范围。 使用了两个数据框,第一行包含日期(例如:2013-02-04)
如果我添加 geom_smooth,那么我会在 shape 图例中得到不同颜色的矩形,而不是黑色圆圈。我怎样才能防止这种情况发生?这是 sample code . library(ggplot2) d
我正在寻找两个变量之间的比较图,重叠两个产品的 geom_smooth()。测量力理论的起点是 (x=0; y=0) 但是当我制作图表时,蓝色回归线是用 geom_smooth() 不传递坐标 (0;
如何在 geom_smooth() 中改变线条边框的颜色? library(ggplot2) mtcars$cyl <- as.factor(mtcars$cyl) ggplot(mtcars, ae
我有如下数据: library(quantreg) library(ggplot2) data <- structure(list(country_mean_rep = structure(c(73.
这个问题在这里已经有了答案: R stat_smooth all points (1 个回答) 关闭4年前。 我正在绘制一个包含 3 个不同类别的图表,这些类别由不同的颜色表示。我想要一条曲线来表示总
我有一个小问题,我自己无法解决这个问题。 我有一个简单的数据框,我想用 ggplot2 绘制它.当我使用变量 重量 作为一个因素,我得到 x 轴上的所有值,s。 plot 2,但当我将它用作整数时,s
使用以下代码: library(ggplot2) ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point(aes(colour=factor(cyl)))
我是一名优秀的程序员,十分优秀!