R 绘图中的颜色规范

R 绘图中的颜色规范,r,R,我在玩Epi包中的ROC函数,它的文档指定可以将图形参数传递给plot函数。默认情况下,ROC生成灰度图。我试着只把ROC曲线本身(锯齿线)涂成红色 以下是我尝试过的: x = rnorm(100) y = c(rep(0,50), rep(1,50)) library(Epi) par(col="red"); ROC(form = y~x, plot="ROC") 这将创建一个颜色不一致的奇怪图形。PAR文档确实描述了一些特定的方法,如Cel.Labor和

我在玩Epi包中的ROC函数,它的文档指定可以将图形参数传递给plot函数。默认情况下,ROC生成灰度图。我试着只把ROC曲线本身(锯齿线)涂成红色

以下是我尝试过的:

    x = rnorm(100)
    y = c(rep(0,50), rep(1,50))

    library(Epi)

    par(col="red"); ROC(form = y~x, plot="ROC")
这将创建一个颜色不一致的奇怪图形。PAR文档确实描述了一些特定的方法,如Cel.Labor和Cel.Axor,用于颜色特定的图形元素,但不包括主线颜色的参数。p>
我不得不认为这个基本问题一定在其他地方得到了解决,但到目前为止还没有在R文档和Google上找到答案。

对于您的具体情况,如果您想修改函数
ROC
,以满足您的需要,您可以执行以下操作。在控制台上键入
ROC
,查看
ROC
的代码。复制并粘贴到文件中,并为其指定一个新名称,如
ROC2
。查找以下代码:

if (any(!is.na(match("ROC", toupper(plot))))) {
        plot(1 - res[, 2], res[, 1], xlim = 0:1, xlab = "1-Specificity", 
            ylim = 0:1, ylab = "Sensitivity", type = "n", ...)
        if (is.numeric(grid)) 
            abline(h = grid/100, v = grid/100, col = gray(0.9))
        abline(0, 1, col = gray(0.4))
        box()
        lines(1 - res[, 2], res[, 1], lwd = lwd)
您需要在
调用中传递
col=“red”
或类似的消息。例如,您可以将
mycl
参数添加到函数本身,然后将该行更改为:

lines(1 - res[, 2], res[, 1], lwd = lwd, col = mycol)

另外,正如我在下面提到的,您还必须将
ROC.tic
的所有实例更改为
Epi:::ROC.tic
对于您的特定情况,如果您想要修改函数
ROC
以满足您的需要,您可以执行以下操作。在控制台上键入
ROC
,查看
ROC
的代码。复制并粘贴到文件中,并为其指定一个新名称,如
ROC2
。查找以下代码:

if (any(!is.na(match("ROC", toupper(plot))))) {
        plot(1 - res[, 2], res[, 1], xlim = 0:1, xlab = "1-Specificity", 
            ylim = 0:1, ylab = "Sensitivity", type = "n", ...)
        if (is.numeric(grid)) 
            abline(h = grid/100, v = grid/100, col = gray(0.9))
        abline(0, 1, col = gray(0.4))
        box()
        lines(1 - res[, 2], res[, 1], lwd = lwd)
您需要在
调用中传递
col=“red”
或类似的消息。例如,您可以将
mycl
参数添加到函数本身,然后将该行更改为:

lines(1 - res[, 2], res[, 1], lwd = lwd, col = mycol)

另外,正如我在下面提到的,您还必须将
ROC.tic
的所有实例从查看
ROC
中的代码更改为
Epi:::ROC.tic

,看起来您无法直接执行此操作。
中的参数被传递到
绘图(类型='n',…)
中,所有线条的绘制都是用硬编码的颜色单独完成的。谢谢。是否可以手动覆盖功能的硬编码元素?抱歉,这里的编程经验太少。从查看
ROC
中的代码来看,您似乎无法直接执行此操作。
中的参数被传递到
绘图(类型='n',…)
中,所有线条的绘制都是用硬编码的颜色单独完成的。谢谢。是否可以手动覆盖功能的硬编码元素?很抱歉,这里的编程经验很少。不熟悉此函数,但您是否可以将省略号添加到
lines()
调用中,以确保该方法中包含任何图形参数?@JeffAllen可能,我只是认为这样更容易理解。但是现在我尝试这一点毫无意义,似乎
ROC
正在调用Epi中的未导出函数,因此需要进行更多修改。谢谢joran!!非常好用。不熟悉这个函数,但是你能不能在
lines()
调用中添加省略号,以确保该方法中包含任何图形参数?@JeffAllen可能吧,我只是觉得这样更容易理解。但是现在我尝试这一点毫无意义,似乎
ROC
正在调用Epi中的未导出函数,因此需要进行更多修改。谢谢joran!!工作完美。