我找到了解决方案,添加标志而不是国家名称作为分类变量的标签作为轴。但是,当我想用一个标志来标记facet_grid(Country ~ Year, switch = "y")
facet_grid(Country ~ Year, switch = "y")
0yg35tkg1#
ragg包启用AGG图形后端,完全支持高级文本功能,包括emoji。这使得您可以轻松地在任何可以使用文本字符串(轴,面标签,绘图标签等)的地方包含任何国旗,并且您可以利用操作系统中内置的表情符号集,而不是寻找自己的图形资源。
RStudio可以配置为使用AGG渲染器作为其后端(设置->通用->图形),ggsave()也可以使用此后端来保存图:
ggsave()
library(ragg) library(ggplot2) df <- data.frame( country = c('🇨🇦 Canada', '🇺🇸 United States', '🇲🇽 Mexico') ) ggplot(df, aes(x = 1, y = 1)) + facet_grid(facets = ~country) ggsave('flags.png', width = 4, height = 2, device = agg_png)
kg7wmglp2#
只要你有一些指向你想要的标志的url,你就可以从ggtext使用element_markdown。如果你在列中只有国家名称,那么这个小函数会有所帮助:
ggtext
element_markdown
get_flag <- function(data, column) { data[[column]] <- paste0("<img src='https://www.sciencekids.co.nz/images/pictures/flags96/", data[[column]], ".jpg' width='100' /><br>*", data[[column]], '*') data }
所以现在你可以
library(ggplot2) library(ggtext) ggplot(get_flag(df, 'Country'), aes(Set, Value)) + geom_point() + facet_grid(Country ~ Year, switch = 'y') + theme(strip.text.y.left = element_markdown(angle = 0), strip.placement = 'outside')
使用数据
df <- data.frame(Year = rep(2020:2023, each = 6), Value = rnorm(24), Set = rep(rep(c('A', 'B'), each = 3), length = 24), Country = rep(c('Canada', 'Scotland', 'Mexico'), length = 24))
2条答案
按热度按时间0yg35tkg1#
ragg包启用AGG图形后端,完全支持高级文本功能,包括emoji。这使得您可以轻松地在任何可以使用文本字符串(轴,面标签,绘图标签等)的地方包含任何国旗,并且您可以利用操作系统中内置的表情符号集,而不是寻找自己的图形资源。
RStudio可以配置为使用AGG渲染器作为其后端(设置->通用->图形),
ggsave()
也可以使用此后端来保存图:kg7wmglp2#
只要你有一些指向你想要的标志的url,你就可以从
ggtext
使用element_markdown
。如果你在列中只有国家名称,那么这个小函数会有所帮助:所以现在你可以
使用数据