I 2列のセットを有する内ggplot2の点の色を変更するは、次のようにforループ
# cluster the data
n_k = 2:3
for (i in seq_along(n_k)) {
assign(paste0("cl_", n_k[ i ]),
kmeans(dt[ , .(x, y) ], centers = n_k[ i ]))
dt[ , (paste0("cl_", n_k[ i ])) :=
as.factor(get(paste0("cl_", n_k[ i ]))$cluster) ][]
}
これで、データセットdt
にcl_2
とcl_3
という列を追加しました。 ggplot2
で生成された2つのプロット内で、これらの2つの列を自分のカラーセットとして使用したいと思います。これまでのところ、2つのプロットを作成するためにすべてforループに入れました。機能しないのは色の指定だけです。たとえば、列cl_2
は無視され、cl_3
のみとみなされます。ここでは、プロットの生成は次のとおりです。
# building plots
for (i in seq_along(n_k)) {
assign(paste0("p_", n_k[ i ]),
ggplot(data = dt,
aes(x = x, y = y,
color = get(paste0("cl_", n_k[ i ])))) +
geom_point() +
ggtitle(paste0("kmeans with ", n_k[ i ], " centers")))
}
次のように私はこれらをプロット:
grid.arrange(p_2, p_3, ncol = 2)
私を困惑何をすることは私が手動で2のプロットを構築した場合、すべてが期待と同じように動作することです。たとえば、次のようにすると正しい結果が得られます。
p_2 = ggplot(data = dt, aes(x = x, y = y,
color = get(paste0("cl_", n_k[ 1 ])))) +
geom_point()
p_3 = ggplot(data = dt, aes(x = x, y = y,
color = get(paste0("cl_", n_k[ 2 ])))) +
geom_point()
私が間違っていることに関するヒントはありますか?
'?aes_'を見てみましょう。これは、文字列として与えられた名前で列を使用することができます –
@ GregordeCillia良い呼び出しが、それは動作しませんでした... – contefranz
はい私の悪い、私は 'aes_string'を意味します。 'aes_'も動作しますが、構文は少し異なります。 –