如何修复rms包中的ggplot调用

如何修复rms包中的ggplot调用,r,ggplot2,R,Ggplot2,问题 我想我在rmspackage函数ggplot.Predict()中发现了一个bug,但我无法找到解决方法。使用ggplot.Predict()函数时,图例颜色不同,且绘图未正确对齐;但是,使用基本的R图形plot()效果很好,因此我试图找出ggplot.Predict()函数调用的情况 我在R和ggplot中的局限性导致我在函数中进行了一些初始测试——请参见下面我尝试的内容——但我不知道从何处着手解决包中函数调用中的问题。我已经向软件包维护人员提出了一个问题,并要求我看看是否可以解决它,但

问题

我想我在
rms
package函数
ggplot.Predict()
中发现了一个bug,但我无法找到解决方法。使用
ggplot.Predict()
函数时,图例颜色不同,且绘图未正确对齐;但是,使用基本的R图形
plot()
效果很好,因此我试图找出
ggplot.Predict()
函数调用的情况

我在R和
ggplot
中的局限性导致我在函数中进行了一些初始测试——请参见下面我尝试的内容——但我不知道从何处着手解决包中函数调用中的问题。我已经向软件包维护人员提出了一个问题,并要求我看看是否可以解决它,但我已经用尽了我的知识,正在寻求帮助以确定问题


需要注意的重要事项:

这是来自
rms
包的
ggplot
调用:

ggplot(zz, aes(x=.xx., y=.yhat, color=.cond)) + geom_line() + 
    coord_cartesian(ylim=c(2, 12)) + labs(x=expression(x1), y=\"y1\") + 
    theme(plot.margin = grid::unit(rep(0, 4), 'cm')) + colFun(name=expression(Set))
这是指向
rms
包中函数的链接:

有一条错误消息与不推荐使用的参数有关,与测试后的问题无关

错误:

此外:警告消息:
show\u guide
已被弃用。请 改用
show.legend


示例

我已经建立了两个多元回归模型,并想用
ggplot.Predict()
绘制它们的拟合值。看问题底部的情节

样本数据

模型和绘图代码:


绘图

  • ggplot
    显示问题

  • R基准
    绘图

  • ggplot
    aestype[1]
    更改为
    aestype[2]


我不明白你是如何从那份声明中得到任何东西的。我以为你总是需要一个aes():P@Richo64这是因为
rms
包在处理调用的包中有一个特殊的函数
ggplot.predict
或只是
ggplot
,但我不明白它为什么要对组执行此操作。问题是为什么
ggplot
中的两行与
plot
中的两行颜色不同?@amsterll可能是
colFun(name=expression(Set))
行?看起来,
colFun
在第376行或第474行内部定义为
ggplot.Predict.s
,具体取决于
j
值(无论是什么)。它似乎将一个标准的ggplot标度粘贴成一个字符串,然后通过
get
访问它。这是一个540行的函数,一眼就能看到大约30行的注释。我可能要花几个小时才能弄清楚它在干什么。你可以分出回购协议,一行一行地进行,然后试着弄清楚到底是什么,但这远远超出了我的动机。
dd = data.frame(x1 = 2 + (runif(200) * 6), 
  x12 = 100 + (runif(200) * 6), 
  x13 = 1400 + (runif(200) * 600))
dd$y1 = rep(c(1.2, 1.4), each = 100) * dd$x1 + (runif(200) / 5)
library(rms)
ddist <- datadist(dd)
options("datadist" = "ddist")

g <- ols(y1 ~ x1 + x12 + x13, data = dd, x = TRUE, y = TRUE)
a <- Predict(g)

h <- ols(y1 ~ I(x1^2) + I(x12^2) + I(x13^2), data = dd, x = TRUE, y = TRUE)
b <- Predict(h)

p <- rbind(a,b)
ggplot(p, group = ".set.") 
  376:   colFun <- if(aestype[1] == 'color') colorscale else
  474:   colFun <- if(aestype[j] == 'color') colorscale else