我更新了@tonytonov的答案,以免干扰默认的X轴。它仍然作为一个轴实现,但是它实现了自己的'title'比例尺,并将用户提供的标题属性(如字体大小和颜色)与使轴不可见所需的默认属性正确地合并。这个版本隐藏了轴,而不预设特定的背景色。以下是三个示例函数。
library(ggvis)
add_title <- function(vis, ..., properties=NULL, title = "Plot Title")
{
merge.lists <- function(a, b) {
a.names <- names(a)
b.names <- names(b)
m.names <- sort(unique(c(a.names, b.names)))
sapply(m.names, function(i) {
if (is.list(a[[i]]) & is.list(b[[i]])) merge.lists(a[[i]], b[[i]])
else if (i %in% b.names) b[[i]]
else a[[i]]
}, simplify = FALSE)
}
default.props <- axis_props(
ticks = list(strokeWidth=0),
axis = list(strokeWidth=0),
labels = list(fontSize = 0),
grid = list(strokeWidth=0)
)
axis.props <- do.call(axis_props, merge.lists(default.props, properties))
vis <- scale_numeric(vis, "title", domain = c(0,1), range = 'width')
axis <- ggvis:::create_axis('x', 'title', orient = "top", title = title, properties = axis.props, ...)
ggvis:::append_ggvis(vis, "axes", axis)
}
iris %>%
ggvis(x = ~Petal.Width) %>%
layer_points(y = ~Petal.Length, fill = ~Species) %>%
add_title(title = "Petal.Width vs. Petal.Length")
iris %>%
ggvis(x = ~Petal.Width) %>%
layer_points(y = ~Petal.Length, fill = ~Species) %>%
add_axis("x", title = "X-axis!!!!", title_offset=40,
properties = axis_props(title=list(fontSize=16),
labels = list(fontSize = 12))) %>%
add_title(title = "Petal.Width vs. Petal.Length")
iris %>%
ggvis(x = ~Petal.Width) %>%
layer_points(y = ~Petal.Length, fill = ~Species) %>%
add_title(title = "Petal.Width vs. Petal.Length",
properties = axis_props(title=list(fontSize=20)))
mtcars %>% ggvis(~wt, ~mpg) %>% layer_points() %>% add_axis("x", title = "长轴标签") %>% add_title(title = "任何标题")
- Chris Warthtype =
规范,因为它是多余的(在?add_axis
的第一个示例中提供支持)。无论如何,只是想感谢您的努力和有意义的编辑说明。 - tonytonov