2016-04-14 15 views
1

我認爲在點陣圖函數中讀取pch參數的方式可能存在一個錯誤,但是在報告之前會很欣賞同行確認。dotchart pch中的錯誤?

在下面,我希望顏色和符號隨組而變化。顏色正常工作正常,但不符號。

foo <- data.frame(Specimen=paste("Specimen", 1:18), 
       Group=c(rep("Benign", 4), 
         rep("In-situ", 6), 
         rep("Invasive", 8)), 
       Outcome=rweibull(18, 5) + (1:18/18)) 

with(foo, dotchart(Outcome, 
    groups = Group, 
    color = c("green", "orange", "red")[Group], 
    pch=c(16, 15, 17)[Group], 
    xlab="Outcome measure /bar", 
    labels = Specimen)) 

有一個簡單而離奇的解決方法通過顛倒「組」列的編碼PCH:

with(foo, dotchart(Outcome, 
    groups = Group, 
    color = c("green", "orange", "red")[Group], 
    pch=c(16, 15, 17)[rev(Group)], 
    xlab="Outcome measure /bar", 
    labels = Specimen)) 

不過,我沒有看到一個合理的理由爲PCH載體應具有可反過來,特別是因爲顏色似乎完全按預期工作。思考?順便說一句,我通常嘗試改變圖表中不同組的符號以及顏色的原因是爲了色盲閱讀器的好處。當然,在這種情況下並不重要。

回答

0

我同意這可能是一個錯誤(我對此基本R函數真的很謹慎)。

Specficially,dotchart這裏重新排序colorlcolor(線顏色)參數:

o <- sort.list(as.numeric(groups), decreasing = TRUE) 
x <- x[o] 
groups <- groups[o] 
color <- rep_len(color, length(groups))[o] 
lcolor <- rep_len(lcolor, length(groups))[o] 

......而那些在後續ablinepoints調用中使用,但pch被改變地傳遞。此修復程序很可能會簡單地添加行,

pch <- rep_len(pch, length(groups))[o] 

如果我希望把我的迂腐的帽子(這是提交錯誤報告之前一個好主意),我想指出,爲?dotchart的說明文件:

爲要點和標籤使用的顏色。

color說法,但僅限於:

PCH繪製字符或符號來使用。

pch的說法。有些人可能會爭辯說,這「明確」意味着只有color意在採取多種價值觀,所以從這個意義上說,這不是一個「錯誤」。

+0

非常感謝。我剛剛測試了你的解決方案(用這個額外的行創建了一個函數「dottychart」),並且它工作正常。我想我可能會試圖報告這一點,除非你願意?我相對來說是一個初學者,不習慣在基礎函數的內核中挖掘!我看不出將這一行添加到代碼會造成什麼樣的危害。我忽略了一個疏忽,而不是故意的疏忽。 – Knackiedoo