弯曲曲线的上部

时间:2019-10-20 18:45:23

标签: r

如何只加粗曲线的某个部分?在这种情况下,有效边界是上半部。

以下是我的代码

m.insert({key, test_t(5)});

我的图表:

enter image description here

我的一个解决方案是将数据分成上下两半,并使用不同的lwd =“”分别绘制线条,但是我认为这行不通,因为数据不连续

编辑:这是数据

#portfolio contains my data
portfolio<-read.table(........)

#this plots a scatter plot, however type="n" so nothing shows up
plot(portfolio$PortfolioRisk,portfolio$PortfolioReturn, xlab = "Risk", ylab 
= "Return", type = "n")


curv <- loess(portfolio$PortfolioReturn~portfolio$PortfolioRisk)

lines(curv)

points(0.15,0.20, pch = 21, bg = 1)
points(0.20,0.25, pch = 21, bg = 1)
text(c(0.15,0.20), c(0.20,0.25), labels=c("B", "E"), cex=0.8, pos =1)

2 个答案:

答案 0 :(得分:1)

您可以分别绘制两个部分。这里是一个示例,因为您没有提供数据。

curve(sqrt(x), xlim=c(0, 4), ylim=c(-4, 4), lwd=4)
curve(-sqrt(x), add=TRUE)
points(1, sqrt(1), pch=21, bg=1)
points(.5, -sqrt(.5), pch=21, bg=1)
text(c(1,.5), c(sqrt(1),-sqrt(1)), labels=c("B", "E"), cex=0.8, pos =1)

enter image description here

答案 1 :(得分:1)

这是一种或多或少自动执行问题要求的方法。请注意,它使用索引1:m将向量子集化。我的第一个尝试是m:curv$n,并得到了曲线的 lower 部分。视情况调整此解决方案。

第一条指令几乎等于问题中发布的代码。区别在于使用参数loess的对data的调用。

plot(portfolio$PortfolioRisk,
     portfolio$PortfolioReturn, 
     xlab = "Risk", ylab = "Return", type = "n")


curv <- loess(PortfolioReturn ~ PortfolioRisk, data = portfolio)

现在是新零件。

m <- which.min(curv$x)
lines(curv)
lines(curv$x[1:m], curv$y[1:m], lwd = 2)

最后是使它变得漂亮的说明。

points(0.15,0.20, pch = 21, bg = 1)
points(0.20,0.25, pch = 21, bg = 1)
text(c(0.15,0.20), c(0.20,0.25), labels=c("B", "E"), cex=0.8, pos =1)

enter image description here