在哪里可以找到完整的形状和颜色列表作为 geom_point 的字符输入?
where can I find the complete list of shapes and colors as character inputs for geom_point?
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point(shape = "square", color = "blue")
我有一个函数可以接受 shape
和 color
参数,这些参数将传递给 geom_point。我需要检查输入是否有效。所以我需要做类似的事情:
stopifnot(形状 %in% all_valid_shapes)
颜色同上
那么我在哪里可以获得这些列表?
见this existing question for validating color。
对于形状,您可以使用未导出的 ggplot
函数来验证形状名称
ggplot2:::translate_shape_string(4) # ok
ggplot2:::translate_shape_string("cross") # ok
ggplot2:::translate_shape_string("oops") # bad
ggplot2:::translate_shape_string(30) # bad
你可以看看它是否抛出错误。但是因为这是一个未导出的函数,所以不能保证它在未来版本的 ggplot2 中工作或维护,因此使用风险自负。
或者 ggplot specs vignette vignette("ggplot2-specs", package="ggplot2")
中的代码似乎给出了所有可能值的列表。您可以根据该列表检查潜在的字符串值。
shape_names <- c(
"circle", paste("circle", c("open", "filled", "cross", "plus", "small")), "bullet",
"square", paste("square", c("open", "filled", "cross", "plus", "triangle")),
"diamond", paste("diamond", c("open", "filled", "plus")),
"triangle", paste("triangle", c("open", "filled", "square")),
paste("triangle down", c("open", "filled")),
"plus", "cross", "asterisk"
)
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point(shape = "square", color = "blue")
我有一个函数可以接受 shape
和 color
参数,这些参数将传递给 geom_point。我需要检查输入是否有效。所以我需要做类似的事情:
stopifnot(形状 %in% all_valid_shapes) 颜色同上
那么我在哪里可以获得这些列表?
见this existing question for validating color。
对于形状,您可以使用未导出的 ggplot
函数来验证形状名称
ggplot2:::translate_shape_string(4) # ok
ggplot2:::translate_shape_string("cross") # ok
ggplot2:::translate_shape_string("oops") # bad
ggplot2:::translate_shape_string(30) # bad
你可以看看它是否抛出错误。但是因为这是一个未导出的函数,所以不能保证它在未来版本的 ggplot2 中工作或维护,因此使用风险自负。
或者 ggplot specs vignette vignette("ggplot2-specs", package="ggplot2")
中的代码似乎给出了所有可能值的列表。您可以根据该列表检查潜在的字符串值。
shape_names <- c(
"circle", paste("circle", c("open", "filled", "cross", "plus", "small")), "bullet",
"square", paste("square", c("open", "filled", "cross", "plus", "triangle")),
"diamond", paste("diamond", c("open", "filled", "plus")),
"triangle", paste("triangle", c("open", "filled", "square")),
paste("triangle down", c("open", "filled")),
"plus", "cross", "asterisk"
)