在 R 中的两条曲线的交点上找到一个点

问题描述

我的目标是绘制与下图相同的图形。

enter image description here

这是我的虚拟数据

svd = c(93.1768266228751,80.8828881575493,74.9252643384626,58.728307285276,55.6071180124227,52.1049357981077,48.9368501752445,46.5223526337721,44.686322689287,44.2385101969825,42.0221360220679,39.3508810605723,38.328336809161,37.6217019593487,35.1011963229615,34.7109098631021,33.5772418742825,32.2145370875274,32.1636505404962,31.3179647348902,30.8791834752992,30.239537822046,28.6789171194815,27.3285224856971,26.9751185400668,26.1069013619846,26.0265021659453,24.906132809697,23.4367089167673,21.641858831997,20.1983059762678)
    
cc1 = c(54.6760227141476,48.7931089550736,47.9334657117593,47.3321652705517,47.080992718472,46.8785536114413,46.4331137951439,46.0501714405594,45.0055916969059,44.7757287349285,44.5746024569832,44.3726393125508,44.1517548958341,43.8240086851837,43.5673344643368,43.3667439813513,42.9438085359286,42.7530428269707,42.4869665340228,41.9826317444297,41.7534931578505,41.2640303360515,40.953286288465,40.6988967683226,40.3750101540625,39.9575827980763,39.3759116349504,39.2650188751364,39.1145593896217,38.2830565981822,37.7520964362991)

以下是我绘制结果的代码

pcaCharts <- function(x,y) {
  
  #%explained variance and cumulative %explained variance of real data 
  x.var <- x$d^2/sum(x$d^2) * 100
  x.pvar <- cumsum(x.var)
  
  #%explained variance of a random matrix
  x.var1 <- y^2/sum(y^2) * 100

  #plot
  par(mar = c(5,5,2,5))
  par(xaxs='i',yaxs='i')
  plot(x.var,xlab="k",ylab="%explained by each component",axes = F,xlim=c(1,length(x.var)),ylim=c(round(min(x.var),1),round(max(x.var),1)),type='l',col='blue')
  lines(x.var1,col="purple")
  x.ticks = seq(1,length(x.var))
  y.ticks = seq(round(min(x.var),1))
  axis(1,at = x.ticks)
  axis(2,at = y.ticks,labels = paste0(y.ticks,"%"))
  
  par(new = T)
  par(xaxs='i',yaxs='i')
  plot(x.pvar,xlab=NA,ylab= NA,ylim=c(0,100),col='green')
  y.ticks1 = seq(0,100,10)
  axis(side = 4,at = y.ticks1,labels = paste0(y.ticks1,"%"))
  mtext("Cumulative %explained variance",side = 4,line = 3)

}
pcaCharts(svd,cc1)

现在我遇到了两个目前无法解决的问题。

  1. 我想将 x 轴和左 y 轴之间的原点强制为一个点,如上图(即分别为 1 和 round(min(x.var),1))。同时,两侧y轴的峰值均为100%。

  2. 我想自动找出紫色曲线和蓝色曲线相交处的坐标点。然后,在交点处,我添加了如上图所示的红线。

感谢任何帮助!谢谢!

更新:我更新了我当前的解决方案,非常接近我的目标!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...