我需要以粗体显示图形图例的标签。标签之一是包含“下或等号”的表达式。
这是我的出发地:
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)))
但无济于事。任何帮助表示赞赏。
答案 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的≤
进行符号
library(ggtext)
ggplot(df, aes(x, y, shape=z)) +
geom_point() +
scale_shape_discrete(labels=c("**Age > 65**", "**Age ≤ 65**")) +
theme(legend.text=element_markdown())
(我在Windows机器上,默认的Windows图形设备可能会在符号上添加额外的空格。使用ragg::agg_png()
可以避免在保存图时出现问题,但下一版RStudio将允许您change the graphics backend来绕过这些问题。)