【问题标题】:Bug in dotchart pch?dotchart pch 中的错误?
【发布时间】:2019-08-23 12:43:43
【问题描述】:

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

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

【问题讨论】:

    标签: r


    【解决方案1】:

    我同意这可能是一个错误(我对像这样的基本 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 打算采用多个值,因此从这个意义上说,这不是一个“错误”。

    【讨论】:

    • 非常感谢。我刚刚测试了你的解决方案(用这个额外的行创建了一个函数“dottychart”),它工作正常。我想我可能会尝试报告这个,除非你愿意?相对而言,我是一个初学者,不习惯在基本功能的胆量中挖掘!我看不出将这一行添加到代码中会有什么危害。我有点疏忽而不是故意遗漏的味道。
    【解决方案2】:

    这绝对看起来像一个错误。我有一个数据集,其中样本有一个相当复杂的 4*4 颜色+pch 编码,对应于样本名称中的事物,在组的顶部,pch 值似乎根本没有重新排序组重新排序。我将尝试在接下来的几周内提交错误报告。我有 R 3.6.1

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多