r - ggplot2 和 RcolorBrewer 具有 2 个值的定性调色板

标签 r colors ggplot2

我使用 RColorBrewer 在 ggplot2 中设置颜色。我编写了一个函数,并在同一张图表上叠加了 1 到 4 条线。为了设置我使用的颜色:

scale_color_brewer(type="qual", palette="Set1")

根据手册“对于定性调色板,可用的不同值的最低数量始终为 3”,因此当行数等于 1 或 2 时,我会收到警告消息。有什么小技巧可以应对吗?

罗伯特

@Ben Bolker:您是绝对正确的,在许多情况下必须提交可重现的示例,尽管这里没有必要。因为我原来的函数很长,所以我准备了简单的例子来说明问题。

library("datasets")
library("ggplot2")

set.seed(1367)
y <- log10(lynx)
y.estim <- y + rnorm(length(y), sd=0.2)
mydf <- data.frame(time=1:length(y), y, y.estim) 
mydf <- melt(mydf, id="time")

p <- ggplot(mydf, aes(x=time, y=value, color=variable))
p + geom_line() + geom_point(size=2) + theme_bw() +
   scale_color_brewer(type="qual", palette="Set1") #here is a problem

也许我可以直接指定颜色。我知道

library("RColorBrewer")
> brewer.pal(4, "Set1")
[1] "#E41A1C" "#377EB8" "#4DAF4A" "#984EA3"

是否可以使用例如“#E41A1C”?

最佳答案

正如 @mnel 所建议的,将语句包装在显式 print 语句中似乎可以工作:

suppressWarnings(print(p + geom_line() + geom_point(size=2) + theme_bw() +
     scale_color_brewer(type="qual", palette="Set1")))

session 信息:

> sessionInfo()
R Under development (unstable) (2012-10-14 r60940)
Platform: i686-pc-linux-gnu (32-bit)

[snip]

other attached packages:
[1] reshape2_1.2.1  ggplot2_0.9.2.1

编辑 - @mnel

您可以重新定义 print.ggplot 以自动执行此操作。我不知道这是否会导致 环境(parent.frame 问题)

print.ggplot <- function(..., warnings = getOption('ggplot_warning', default = TRUE)){
  if(warnings){
    ggplot2:::print.ggplot(...))} else { 
     suppressWarnings(ggplot2:::print.ggplot(...))
   }
  }

因此,如果您想将 ggplot 打印的所有警告设置为关闭,只需设置

options(ggplot_warning = FALSE)

否则它应该表现正常。

关于r - ggplot2 和 RcolorBrewer 具有 2 个值的定性调色板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13175440/

相关文章:

r - 创建三角矩阵

r - 如果上面的行在R中没有错误,请运行此行

r - GGplot图例堆叠所有形状/从图例中删除一项

r - 散点图/火山图作为 t.test 的输出

rCharts 显示在 RStudio 查看器中,而不显示在浏览器中 (Chrome)

r - 如何分解由列表列表组成的数据框

ios - 如何更改 GetCell() 中的单元格颜色?

javascript - 从十六进制值中检测相似的颜色

math - 如何通过指定alpha混合量来计算RGB颜色?

Shiny 的响应式(Reactive) DateRangeInput