如何解决使用reorder_within后在轴标签中加粗项目
我正在使用R中tidytext包中的reorder_within()函数绘制不同频率的图。一个类似的例子来自here。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type='checkBox' class='bcheck' data-x='admin'>
<input type='checkBox' class='bcheck' data-x='nts'>
<input type='checkBox' class='bcheck' data-x='chat'>
<button>CLICK</button>
输出图像为:
我该如何在每个方面加粗单个项目?例如,如果我想在每个构面的轴标签上加粗David名称,我该怎么做?
解决方法
与@tamtam链接的答案中的解决方案相反,这是一种需要最少开销的解决方案:您可以使用ggtext::element_markdown
将ggplot中的任何文本解释为markdown。只需添加axis.text.y = ggtext::element_markdown()
,所有形式为"**Name**"
的变量名都以粗体显示:
library(ggplot2)
library(dplyr)
library(tidytext)
test_data <- data.frame(
decade = rep(c("1950","1960","1970","1980"),each = 3),name = rep(c("Max","**David**","Susan"),4),n = c(2,1,4,5,3,7,10,3)
)
test_data %>%
group_by(decade) %>%
ungroup %>%
mutate(decade = as.factor(decade),name = reorder_within(name,n,decade)) %>%
ggplot(aes(name,fill = decade)) +
geom_col(show.legend = FALSE) +
facet_wrap(~decade,scales = "free_y") +
coord_flip() +
scale_x_reordered() +
scale_y_continuous(expand = c(0,0)) +
labs(y = "Number of babies per decade",x = NULL,title = "What were the most common baby names in each decade?",subtitle = "Via US Social Security Administration") +
theme(axis.text.y = ggtext::element_markdown())
由reprex package(v0.3.0)于2020-09-22创建
,除了@starja的出色示例外,您还可以尝试使用glue
包在名称上建立条件,然后使用该函数进行排序。关键是将标签的格式设置为element_markdown()
中的ggtext
。这里的代码使用了整个数据:
library(tidyverse)
library(ggtext)
library(glue)
library(babynames)
#Data
top_names <- babynames %>%
filter(year >= 1950,year < 1990) %>%
mutate(decade = (year %/% 10) * 10) %>%
group_by(decade) %>%
count(name,wt = n,sort = TRUE) %>%
ungroup
#Plot
top_names %>%
group_by(decade) %>%
top_n(15) %>%
ungroup %>%
mutate(name=ifelse(name=='David',glue("**{name}**"),name)) %>%
mutate(decade = as.factor(decade),subtitle = "Via US Social Security Administration")+
theme(axis.text.y = element_markdown())
输出:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。