0
我有一个字符向量(在这种情况下,十六进制颜色)。阻止重命名从另一个向量分配的向量元素
somePalette <- structure(c("#F6B436", "#4D86A0","#672767"),
.Names = c("Yellow", "Blue", "Purple")
)
pie(c(1,1,1),col=somePalette)
从这个载体中,我希望选择几个元件传递到另一个载体(在这种情况下,用作values=
参数ggplot2::scale_color_manual
)。
cols <- c("setosa" = somePalette["Yellow"],
"versicolor" = somePalette["Blue"],
"virginica" = somePalette["Purple"])
# This doesn't work
ggplot(iris, aes(x = Sepal.Width, y = Sepal.Length, col = Species)) +
geom_point(size=5) +
scale_color_manual(values=cols)
看来,元素名称我试图分配已经改变,这取决于元件的指数I通过:
> print(cols)
setosa.Yellow versicolor.Blue virginica.Purple
"#F6B436" "#4D86A0" "#672767"
以下的解决方法产生所需的输出:
# This works, though
cols2 <- c("setosa" = "#F6B436",
"versicolor" = "#4D86A0",
"virginica" = "#672767")
ggplot(iris, aes(x = Sepal.Width, y = Sepal.Length, col = Species)) +
geom_point(size=5) +
scale_color_manual(values=cols2)
为什么会发生这种重命名? (如果它不是一个bug,那么有关此行为的文档链接将非常感激。)阻止它发生的最简单方法是什么?
我喜欢'setNames'解决方案,但较不详细的方式将是:'setNames(somePalette [C( '黄', '蓝', '紫')],C( 'setosa',” versicolor','virginica'))upvoted! – arvi1000
感谢这个详细的答案,也感谢@ arvi1000,我也喜欢简洁的setnames版本,在我的实际用例中更易于管理。 – C8H10N4O2