我非常喜欢ggplot2
的{{1}} ggtheme
的所有内容,除非它隐藏所有轴标题。
我如何使用theme_fivethirtyeight()
但是告诉它从另一个主题继承轴标题规范?
答案 0 :(得分:3)
这可以通过很多方式解决。最短的可能是覆盖@ {eipi10建议的element_text
参数。这需要针对每个单独的情节重复进行。
另一种方法是根据现有主题创建自己的自定义主题。 这种方法的好处是,您可以按照自己喜欢的方式重复使用主题。以下是使用theme_fivethiryeight()
的示例。
关键部分是:
mytheme <- theme_fivethirtyeight() +
theme(axis.title = element_text(colour = "black" ))
创建一些虚拟数据以使用:
library("ggplot2")
library("ggthemes")
# make the results reproducible
set.seed(5117)
start_date <- as.Date("2015-01-01")
end_date <- as.Date("2017-06-10")
# the by=7 makes it one observation per week (adjust as needed)
dates <- seq(from = start_date, to = end_date, by = 7)
val1 <- rnorm(length(dates), mean = 12.5, sd = 3)
qnt <- quantile(val1, c(.05, .25, .75, .95))
mock <- data.frame(myDate = dates, val1)
p <- ggplot(data = mock, mapping = aes(x = myDate, y = val1)) +
geom_line() +
geom_point() +
geom_hline(yintercept = qnt[1], colour = "red") +
geom_hline(yintercept = qnt[4], colour = "red") +
geom_hline(yintercept = qnt[2], colour = "lightgreen") +
geom_hline(yintercept = qnt[3], colour = "lightgreen") +
scale_x_date(date_breaks = "6 month", date_labels = "%b-%y") +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
以下是添加原始theme_fivethirtyeight()
以供参考:
p + theme_fivethirtyeight()
创建自定义主题:
mytheme <- theme_fivethirtyeight() +
theme(axis.title = element_text(colour = "black" ))
将自定义主题应用于原始图:
p + mytheme
您可以在命令提示符下键入主题名称(不带“()”),以了解可用于自定义的其他选项。在这里,我突出显示了被替换的axis.title = element_blank()
:
答案 1 :(得分:1)
您可以使用%+replace%
替换所需的特定主题元素。对于任何主题,您都可以使用[[
检索主题元素。因此,如果您希望来自axis.title
theme_gdocs
的主题,您可以执行:theme_gdocs()[["axis.title"]]
。这应该适合你:
ggplot(mtcars) + geom_point(aes(hp, cyl)) +
theme_fivethirtyeight() %+replace% theme(axis.title = theme_gdocs()[["axis.title"]],
axis.title.x = theme_gdocs()[["axis.title.x"]],
axis.title.y = theme_gdocs()[["axis.title.y"]])
我使用theme_gdocs
作为示例,但您可以将其替换为您想要的任何主题。
答案 2 :(得分:1)
ggplot_merge_styles <- function(theme, ...) {
elements <- lapply(as.list(match.call())[-1], function(x) eval(parse(text=deparse(x))))
for (element in names(elements)) {
if (element != 'theme') {
theme[[element]] <- elements[[element]]
}
}
return(theme)
}
然后您可以指定某些设计属性并将它们与其他样式合并在一起。
例如,我喜欢 theme_minimal()
上 plot.title
的设计,只是我希望它是灰色而不是普通的黑色。然后通过运行以下代码,所有 plot.title
属性都被保留,除了被替换的颜色:
plot <-
... +
theme(plot.title = ggplot_merge_styles(theme_minimal()[['plot.title']], colour = "#6f7170"))