名前付きベクトルを使用してggplot2のマニュアルスケールで色を設定する場合、変数を名前の1つとして使用すると、その色は最終プロットには表示されません。手動ggplotスケールで名前付きベクトルの動作を説明できる人はいますか?
library(ggplot2)
first_species <- 'setosa'
colours <- c(first_species = 'black',
'versicolor' = 'cadetblue',
'virginica' = 'hotpink')
ggplot(iris) +
aes(x = Petal.Length, y = Petal.Width, colour = Species) +
geom_point() +
scale_colour_manual(values = colours)
私は名前を使用して名前のベクトルを作成する場合は、プロットが期待通りに表示されます。
colours <- c('black', 'cadetblue', 'hotpink')
names(colours) <- c(first_species, 'versicolor', 'virginica')
ggplot(iris) +
aes(x = Petal.Length, y = Petal.Width, colour = Species) +
geom_point() +
scale_colour_manual(values = colours)
誰も私にこの動作を説明できますか?私はそれが非標準的な評価に関係していると思われます(ggplot2は値ではなく名前を使用していますか?)。
提案手動スケール設定関数で変数を使用する最良の方法は、分かります!
:あなたは
runif("n"=10)
のような名前を引用することができますということは、あなたが引数としてそれ以外の場合は解析できない名前を置くことができますパーサの機能です。 cadetblue '、' virginica '=' hotpink ')、名前(色)をチェックすると、ファーストネームは "setosa"ではなく "first_species"に設定されています。 これは、ggplot()をプロットしてもデータ内の「first_species」が見つからず、プロットされないためです。 –'names'で2行を使用するのではなく、名前を設定するコードを1行にしたい場合は、その状況の便利な機能である' setNames'を使用できます。 – aosmith