在db["collectionName"].find({_id: {$exists: true}}).forEach(function(doc) {
if (Object.keys(doc).length === 1) {
// ..delete this document db["collectionName"].remove({_id: doc._id})
}
})
中是否有一种优雅的方式使ggplot2
/ geom_text
继承geom_label
的{{1}}规范?
或反过来问:我是否可以指定同样适用于theme
/ base_family
的{{1}}?
示例:
我希望theme
看起来与geom_text
中指定的geom_label
完全相同...
显然我可以手动添加规范作为text/labels
的可选参数,但我希望它能够继承规范"自动" ...
axis.text
补充:与theme
一起使用的解决方案也是完美的......
答案 0 :(得分:5)
你可以
首先,根据系统,您需要检查哪些字体可用。当我在Windows上运行时,我使用以下内容:
install.packages("extrafont")
library(extrafont)
windowsFonts() # check which fonts are available
theme_set
功能可让您指定ggplot的整体主题。因此,theme_set(theme_minimal(base_family = "Times New Roman"))
允许您定义绘图的字体。
要使标签继承此文本,我们需要使用两件事:
update_geom_defaults
可让您更新ggplot中未来绘图的几何对象样式:http://ggplot2.tidyverse.org/reference/update_defaults.html theme_get()$text$family
提取当前全局ggplot主题的字体。通过组合这两者,标签样式可以更新如下:
# Change the settings
update_geom_defaults("text", list(colour = "grey20", family = theme_get()$text$family))
update_geom_defaults("text_repel", list(colour = "grey20", family = theme_get()$text$family))
theme_set(theme_minimal(base_family = "Times New Roman"))
# Change the settings
update_geom_defaults("text", list(colour = "grey20", family = theme_get()$text$family))
# Basic Plot
ggplot(mtcars, aes(x = mpg,
y = hp,
label = row.names(mtcars))) +
geom_point() +
geom_text()
# works with ggrepel
update_geom_defaults("text_repel", list(colour = "grey20", family = theme_get()$text$family))
library(ggrepel)
ggplot(mtcars, aes(x = mpg,
y = hp,
label = row.names(mtcars))) +
geom_point() +
geom_text_repel()