我想绘制在直角坐标x=0
和x=1
处具有非常陡峭梯度的曲线。
我试图根据其斜率生成加权绘图点。 但是我没有成功。
以上情节的代码
# Plot points weighted for gradient (My attempt)
ll <- stats::rchisq(100, 1)
lll <- 0.99 + ll
l <- append(ll, lll)
# Definition of curve
x <- 1 - exp(-l)
y <- 1 - stats::pnorm(0.3*stats::qnorm( exp(-l) ) - 0.5)
# Curve through precisely at (x, y) = (0, 0) and (1, 1)
plot(x, y, xlim = c(0, 1), ylim = c(0, 1))
我想要的情节
修改
使用@TavoGLC的答案,我可以完成几乎完美的绘图。在我的程序包中,定义0.3
中的数字0.5
和y <- 1 - stats::pnorm(0.3*stats::qnorm( exp(-l) ) - 0.5)
发生了变化,因此在下面,我使用0.13
和0.19
代替{{1 }}和0.3
。
答案 0 :(得分:1)
我认为将weigths更改为对数维特,可以更好地逼近预期图形。区域范围分为三个区域,最末端区域使用logspace
生成的值加权,中间部分使用linspace
生成的值加权。
library(pracma)
l0<-logspace(-15, 0, 25)
l2<-linspace(0, 1.5, 25)
l3<-logspace(0,3, 25)
la<-append(l0,l2)
l<-append(la,l3)
# definition of curve
x<- 1-exp(-l)
y <- 1-stats::pnorm(0.3*stats::qnorm( exp(-l ) )-0.5)
plot(x,y,xlim=c(0,1),ylim=c(0,1))
您可以更改logspace
或linspace
的上下边界以获得更好的结果。希望对您有帮助