プロットを作成するとします。
df <- data.frame(A = 1:100, B = jitter(1:100, 25), C = c('One', 'Two'))
p <- ggplot(df, aes(A, B, colour = C)) +
geom_point() +
scale_colour_manual(values = c('red', 'green'))
これらの色 (赤と緑) は のどこに保存されp
ますか?
ここで、関数で使用されている関数のパレットを確認できます。
p$scales$scales[[1]]$palette
この関数の内容は次のとおりです。
function (n)
{
if (n > length(values)) {
stop("Insufficient values in manual scale. ", n, " needed but only ",
length(values), " provided.", call. = FALSE)
}
values
}
色はそこに保存する必要があると思いますvalues
が、実際にどこにあるのかわかりませんp
。
Ps 私はこの質問を見てきました: ggplot オブジェクトから塗りつぶしの色を抽出する方法は? . しかし、私がやろうとしていることについては、プロットを構築できません。組み立てる前に色を揃える必要があります。
p
文字「赤」または「緑」を再帰的に検索する方法があれば、おそらくこれらの値を見つけるのに役立ちます。
編集:私が最終的にやろうとしていること。
プロットする前にプロットを編集しようとしています。アイデアは、いくつかのプロットp
を指定すると、次のようなことができるということです:
apply_theme(p)
...そして配色がプロット全体に適用されます (スケール、グラデーションなどを含む)。これは、次のようなことをしなくて済むようにするためです。
p + some_theme + scales_colour_manual(values = plot_theme)
ユーザーの労力を減らして、テーマをプロット全体に適用できるようにし、グラデーション、個別のスケールなどを着色しているかどうかを心配する必要がないようにしています。
プロットの構築は部分的な解決策です。しかし、テーマを適用して、後でプロットを編集できるようにしたいと考えています。
p
どんな色でもさかのぼってジオメトリに適用されるように編集できました。しかし、スケールカラーでそれを行う方法が見つかりません。色がどこかにあるに違いないことはわかっています!