2

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」で作業することは可能ですか?

4

1 に答える 1

3

@mnelが示唆するように、明示的なprintステートメントでステートメントをラップするとうまくいくようです:

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

セッション情報:

> 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)

それ以外の場合は、通常どおりに動作する必要があります。

于 2012-11-01T12:31:14.163 に答える