2012-08-23 64 views
1

我正在玩Epi包中的ROC函數,其文檔指定您可以將圖形參數傳遞給繪圖函數。默認情況下,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文檔確實描述了一些特定的方法,例如col.lab和col.axis來爲特定的圖形元素着色,但不包括主線顏色的參數。

我不得不認爲這個基本問題必須在別處解決,但到目前爲止還沒有運氣搜索R文檔和Google。

+0

從看看'ROC'中的代碼,它看起來像你不能直接做到這一點。 '...'中的參數被傳遞給'plot(type ='n',...)',並且所有的繪製線都是用硬編碼的顏色單獨完成的。 – joran

+0

謝謝。是否可以手動覆蓋函數的硬編碼元素?對不起,這裏最少的編程經驗。 –

回答

1

對於您的具體情況,如果您想修改功能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",或一些這樣的,在lines通話。舉例來說,你可以一個mycol參數添加到函數本身,然後更改一行:

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

而且,我在下面的說明,您還必須更改的ROC.tic所有實例Epi:::ROC.tic

+0

不熟悉這個函數,但是你可以直接將橢圓添加到'lines()'調用中,以確保該方法中包含任何圖形參數? –

+0

@JeffAllen可能,我只是認爲這會更容易理解。但是現在我嘗試了這一點並沒有什麼意義,似乎'ROC'從** Epi **中調用一個未導出的函數,所以需要進行更多的修改。 – joran

+0

謝謝喬蘭!完美的作品。 –