2

名前付きベクトルを使用して ggplot2 の手動スケールで色を設定する場合、名前の 1 つとして変数を使用すると、色は最終的なプロットに表示されません。

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は値ではなく名前を使用していますか?)。

手動スケール設定関数で変数を使用する最良の方法を提案していただければ幸いです。

4

2 に答える 2

3

次のようなことをすると:

c(n=1)

そのようなこと:

runif(n=10)

はここnでは名前であり、変数のように評価されません。名前付き引数です。次のように名前を引用できるrunif("n"=10)のは、パーサーの機能であり、他の方法では解析できない名前を引数として入れることができます。

list("this has spaces" = 99) # works, list(this has spaces=99) fails
于 2016-11-04T15:59:19.990 に答える