7

黒の背景でggplot2テーマを使用する場合、カラーガイド以外のガイドの凡例の色を制御して、物事が黒くプロットされないようにすることはできますか? もしそうなら、どのように?

library(ggplot2) # needs to be 0.9.3 for this theme
data(iris)       # included with ggplot2

theme_black<- function (base_size = 16, base_family = ""){
    theme_minimal() %+replace% 
        theme(
              line = element_line(colour = "white", size = 0.5, linetype = 1, 
                        lineend = "butt"), 
              rect = element_rect(fill = "white", 
                        colour = "white", size = 0.5, linetype = 1), 
              text = element_text(family = base_family, 
                        face = "plain", colour = "white", size = base_size,
                        angle = 0, lineheight = 0.9, hjust = 0, vjust = 0),
              plot.background = element_rect(colour = 'black', fill = 'black'),
              plot.title = element_text(size = rel(1.2)),
              panel.border = element_rect(fill = NA, colour = "white"), 
              panel.grid.major = element_line(colour = "grey20", size = 0.2), 
              panel.grid.minor = element_line(colour = "grey5", size = 0.5),
              strip.background = element_rect(fill = "grey30", colour = "grey30")
             )
    }

ggplot(data=iris, aes(x=Sepal.Length, y=Sepal.Width, shape=Species,
       colour=Petal.Length))+geom_point()+theme_black()+
       scale_colour_gradient(low = "purple", high = "white")

ご覧のとおり、凡例の形状部分のデフォルトの色は変更されていないため、見えず、どの種がどれであるかはわかりません。

ここに画像の説明を入力

私が今持っている唯一の解決策は、legend.background の色を変更することですが、これはインクの無駄であり、醜いです。

4

2 に答える 2

2

簡単に言えば、これを行う完璧な方法はないようです。

私が受け入れた@ user1317221_Gの回答に従って、シェイプガイドを使用して非表示のレイヤーを追加できます。しかし、それは余分な計算であり、pdf として保存すると、これらの隠れたレイヤーが存在すると予想されます。

または、@bdemarest がコメントで示唆しているように、シェイプ ガイドの色をオーバーライドすることもできます。

+ guides(shape=guide_legend(override.aes=list(colour="white"))

しかし、これでも +theme_black() 以外にテーマ固有のコードを追加する必要があります。

紙 (グレー/白の背景) または画面 (黒の背景) のどちらのプロットを作成しているかに応じて、セッションの既定のテーマを設定するため、これのもう少し精巧なバージョンを実装しました。したがって、私のアプローチは、セッションの早い段階でこれらの行に沿って何かを実行することです。

 set_theme(theme_black); defaultcol = "white" # for slides
 # or
 set_theme(theme_bw); defaultcol = "black"    # for paper

これを含む ggplot() が続きます:

+ guides(shape=guide_legend(override.aes=list(colour=defaultcol))

これには、プロットに対するテーマ固有の調整の必要性を最小限に抑えるという利点がありますが、テーマでデフォルトの ggplot2 カラーを制御できるほどではありません。

于 2012-12-30T20:03:06.583 に答える
1

1 つの方法は、 を 2 つ追加geom_pointすることです。ロジックは次のようになります。

凡例の白い点をプロットし、凡例のない黒い点でそれらを覆い、次に凡例のない色付きの点をプロットします。

geom_point(colour="white",size=1) + 
geom_point(colour="black",size=3,show_guide=FALSE) +
geom_point(show_guide=FALSE)
于 2012-12-22T03:33:12.610 に答える