包含带有较低或相等符号的表达式的标签的黑体字

时间:2020-07-29 14:47:29

标签: r ggplot2 plotmath

我需要以粗体显示图形图例的标签。标签之一是包含“下或等号”的表达式。

这是我的出发地:

library(ggplot2)

df <- data.frame(x=factor(rep(0:1, 10)), y=rnorm(10), z=factor(rep(0:1, 10)))

ggplot(df, aes(x, y, shape=z)) +
geom_point() +
scale_shape_discrete(labels=c("Age > 65", expression(Age <= 65))) +
theme(legend.text=element_text(face="bold"))

这样,第一个标签为粗体,而第二个则不是。根据建议here,我尝试使用plotmath bold():

library(ggplot2)

df <- data.frame(x=factor(rep(0:1, 10)), y=rnorm(10), z=factor(rep(0:1, 10)))

ggplot(aes(x, y, shape=z)) +
geom_point() +
scale_shape_discrete(labels=c("Age > 65", expression(bold(Age <= 65)))) +
theme(legend.text=element_text(face="bold"))

标签仅以粗体显示,直到“ <=”符号为止。我还尝试将字符串的第二部分放在bold()中:

expression(bold(Age bold(<= 65)))

但无济于事。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

plotmath文档中包含以下内容:

请注意,粗体,斜体和粗体不适用于符号,因此不适用于以符号字体显示的希腊符号,例如mu。它们也不适用于数字常量。

相反,建议的方法是使用unicode(假定字体和设备支持),在这种情况下,这意味着我们可以完全省去plotmath

ggplot(df, aes(x, y, shape=z)) +
  geom_point() +
  scale_shape_discrete(labels=c("Age > 65", "Age \U2264 65")) +
  theme(legend.text=element_text(face="bold"))

答案 1 :(得分:0)

尽管对于此特定问题而言有些过大,但软件包ggtext使 ggplot2 中的复杂标签变得容易得多。它允许使用Markdown和HTML语法进行文本呈现。

这是写图例文本标签的一种方法,使用Markdown的**进行加粗,使用HTML的&le;进行符号

library(ggtext)

ggplot(df, aes(x, y, shape=z)) +
     geom_point() +
     scale_shape_discrete(labels=c("**Age > 65**", "**Age &le; 65**")) +
     theme(legend.text=element_markdown())

enter image description here

(我在Windows机器上,默认的Windows图形设备可能会在符号上添加额外的空格。使用ragg::agg_png()可以避免在保存图时出现问题,但下一版RStudio将允许您change the graphics backend来绕过这些问题。)