如何在rms包中修复ggplot调用

时间:2016-02-11 22:07:18

标签: r ggplot2

问题

我想我在rms包函数ggplot.Predict()中发现了一个错误,但我无法弄清楚如何修复它。使用ggplot.Predict()功能时,图例颜色不同,图表无法正确对齐;然而,使用基本R图形plot()工作正常,所以我试图弄清楚ggplot.Predict()函数调用发生了什么。

我在R和ggplot中的限制导致我在函数中进行了一些初步测试 - 请参阅下面我尝试过的内容 - 但我不知道在哪里继续修复函数中的问题在包内打电话。我已经向软件包维护者提出了一个问题,并要求我查看是否可以修复它,但是我已经用尽了我的知识,并且正在寻求帮助来确定问题。

需要注意的重要事项:

这是来自ggplot包的rms来电:

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_guide已被弃用。请   请改用show.legend

示例

我已经建模了两个多元回归,并希望用ggplot.Predict()绘制拟合值。请参阅问题底部的图表。

示例数据

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)

模型和ggplot代码:

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.") 

我尝试过什么

经过一些测试后,似乎colFun()导致了一些问题(见第376和474行)。在第376行,如果aestype[1]更改为aestype[2],则调色板在整个绘图中更改为相同,但图例颜色不同。在第474行,它似乎检查图的数量并分配调色板,但我不完全确定。

  376:   colFun <- if(aestype[1] == 'color') colorscale else
  474:   colFun <- if(aestype[j] == 'color') colorscale else

图解

  • ggplot显示问题

enter image description here

  • R Base plot enter image description here

  • ggplot更改为aestype[1]

    后,
  • aestype[2]

enter image description here

0 个答案:

没有答案