如何解决如何在 ggplot2' geom_label 注意:此问题已更新,因此请参阅“编辑”
注意:此问题已更新,因此请参阅“编辑”
我正在使用 ggplot2 绘制带有一些注释的条形图。我想在数学符号代码(即 \n
)前后添加换行符 (%down%
)。但是,paste(...,sep = "\n")
中的 geom_label(aes(label=paste(...)))
失败并出现以下错误:Error in parse(text = text[[i]]) : <text>:2:1: unexpected SPECIAL
。我该怎么办?
---
output:
bookdown::pdf_document2:
latex_engine: xelatex
keep_tex: true
dev: cairo_pdf
---
knitr::opts_chunk$set(
dev = "cairo_pdf",dev.args = list(family = "Roboto Medium")
)
library(tidyverse)
library(magrittr)
tibble(
F1 = factor(
c(-0.5,-0.5,0.5,0.5),levels = c(-0.5,labels = c("A","H")
),F2 = factor(
c(-0.5,levels=c(-0.5,labels=c("A",pct = c(60,20,40,20)
) %>%
ggplot(
.,aes(
x = F1,y = pct,color = F2,fill = F2
)
)+
geom_bar(
stat="identity",width = 0.6,position = position_dodge(width = 0.7)
) +
geom_label(
parse = TRUE,aes(
label = paste(
sep = "",# "\n"
F1,"%down%",F2
),vjust = -1
),position = position_dodge2(
width = 1
),fill = "white",colour = "black",label.size = NA,size = 5
)
编辑
虽然@the-mad-statter 的 answer 非常有用并且使我能够添加换行符,但向下箭头字符 \u2193
没有出现,因为我在图表中使用的字体没有似乎有\u2193
。我通过指定 knitr::opts_chunk$set(dev.args = list(family = "Roboto Medium"))
来使用 Roboto Medium。
解决方法
似乎对我有用的是将 showtext
包与所需的 Unicode 符号结合使用:
---
output:
bookdown::pdf_document2:
latex_engine: xelatex
keep_tex: true
dev: cairo_pdf
---
```{r setup,include=FALSE}
knitr::opts_chunk$set(
echo = FALSE,dev = "cairo_pdf",dev.args = list(family = "Roboto")
)
library(tidyverse)
library(showtext)
font_add_google("Roboto")
showtext_auto()
```
```{r}
tibble(
F1 = factor(
c(-0.5,-0.5,0.5,0.5),levels = c(-0.5,labels = c("A","H")
),F2 = factor(
c(-0.5,levels=c(-0.5,labels=c("A",pct = c(60,20,40,20)
) %>%
ggplot(
.,aes(
x = F1,y = pct,color = F2,fill = F2
)
)+
geom_bar(
stat="identity",width = 0.6,position = position_dodge(width = 0.7)
) +
geom_label(
parse = FALSE,aes(
label = paste(
sep = "\n",F1,"\u2193",F2
),vjust = -1
),position = position_dodge2(
width = 1
),fill = "white",colour = "black",label.size = NA,size = 5
)
```
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。