我正在使用R和ggplot来绘制一些数据的散点图,一切都很好,除了y轴上的数字是用计算机风格的指数格式出来的,即4e + 05,5e + 05等.这显然很明显不可接受,所以我想把它显示为500,000,400,000等等.获得正确的指数表示法也是可以接受的.
该图的代码如下:
p <- ggplot(valids, aes(x=Test, y=Values)) +
geom_point(position="jitter") +
facet_grid(. ~ Facet) +
scale_y_continuous(name="Fluorescent intensity/arbitrary units") +
scale_x_discrete(name="Test repeat") +
stat_summary(fun.ymin=median, fun.ymax=median, fun.y=median, geom="crossbar")
Run Code Online (Sandbox Code Playgroud)
任何帮助非常感谢.
我对插值函数的一般求根问题感兴趣。
假设我有以下(x, y)数据:
set.seed(0)
x <- 1:10 + runif(10, -0.1, 0.1)
y <- rnorm(10, 3, 1)
Run Code Online (Sandbox Code Playgroud)
以及线性插值和三次样条插值:
f1 <- approxfun(x, y)
f3 <- splinefun(x, y, method = "fmm")
Run Code Online (Sandbox Code Playgroud)
如何找到x这些插值函数与水平线交叉的值y = y0?以下是带有 的图形说明y0 = 2.85。
par(mfrow = c(1, 2))
curve(f1, from = x[1], to = x[10]); abline(h = 2.85, lty = 2)
curve(f3, from = x[1], to = x[10]); abline(h = 2.85, lty = 2)
Run Code Online (Sandbox Code Playgroud)
我知道有关此主题的一些先前主题,例如
我需要使用拟合模型预测x新y值的相应值。
通过使用函数y从新x值预测值的通常情况很简单predict,但是我无法弄清楚如何做相反的事情。
对于具有多个x解决方案的情况,我希望获得x值范围内的所有解决方案,即1-10。并且新值y将始终在y用于拟合模型的值的范围内。
参见下面的示例代码,我需要在其中找到新的x值(new_x)。
x = seq(1:10)
y = c(60,30,40,45,35,20,10,15,25,10)
fit = lm(y ~ poly(x, 3, raw=T))
plot(x, y)
lines(sort(x), predict(fit)[order(x)], col='red')
Run Code Online (Sandbox Code Playgroud)
new_y = 30
new_x = predict(fit, data.frame(y=new_y)) #This line does not work as intended.
Run Code Online (Sandbox Code Playgroud)
编辑1:逆拟合
因为我们得到了不同的模型/拟合线,所以拟合逆关系不会得到相同的模型。
rev_fit = lm(x ~ poly(y, 3, raw=T))
plot(x, y)
lines(sort(x), predict(fit)[order(x)], col='red')
lines(predict(rev_fit)[order(y)], sort(y), col='blue', lty=2)
Run Code Online (Sandbox Code Playgroud)