【问题标题】:R Plot Steep Slope CurveR 绘制陡坡曲线
【发布时间】:2019-06-30 11:30:29
【问题描述】:

我想在笛卡尔坐标x=0x=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 的答案,我可以做出几乎完美的情节。在我的包中,y <- 1 - stats::pnorm(0.3*stats::qnorm( exp(-l) ) - 0.5) 定义中的数字0.30.5 发生了变化,下面我使用0.130.19 而不是0.30.5

【问题讨论】:

  • 如果您将x &lt;- c(0, x, 1)y 结合起来,您将接近该图。
  • 谢谢@RuiBarradas,但它只增加了两点(0,0)(1,1)。我想添加(0,0)(1,1)附近的足够点
  • 也许是seq(0, min(x) - 0.01, length.out = 10) 而不是0?从max(x)1 也是如此。
  • 谢谢@RuiBarradas,但它不起作用,因为它增加了负 9 分。即使我可以添加正点,我认为它也无法绘制连接曲线。但从你的回复来看,我想我必须画一条连接(0,0)(min(x), min(y))的线

标签: r plot


【解决方案1】:

我认为将权重更改为对数权重可以更好地近似预期图表。域范围分为三个区域,极端区域使用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))

您可以从logspacelinspace 更改上下边界以获得更好的结果。希望对你有帮助

【讨论】:

  • 感谢您的回答 :-D 我已经为这个情节问题困扰了将近 2 年。你的回答让我摆脱了这个问题,谢谢:-)它对我很有帮助,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多