dotchart pch中的错误?

时间:2016-04-14 12:34:40

标签: r

我认为在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的向量必须被反转的一个正当理由,特别是因为颜色似乎完全按预期工作。想法?

顺便提一下,我通常尝试改变图表中不同组的符号和颜色的原因是为了色盲读者的利益。当然,在这种情况下并不重要。

2 个答案:

答案 0 :(得分:0)

我同意这可能是一个错误(我对这样的基本R函数非常谨慎)。

具体而言,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意图采取多个值,因此从这个意义上讲,这不是一个“错误”。

答案 1 :(得分:0)

这肯定看起来像是个错误。我有一个数据集,其中样本具有相当复杂的4 * 4 color + pch编码,对应于样本名称中位于组顶部的事物,并且pch值似乎在以下位置未重新排序全部在组重新排序期间。我将在接下来的几周内提交错误报告。我有R 3.6.1