43

我有一个这样生成的图:

ggplot(dt.2, aes(x=AgeGroup, y=Prevalence)) + 
    geom_errorbar(aes(ymin=lower, ymax=upper), colour="black", width=.2) +
    geom_point(size=2, colour="Red")

我像这样控制 x 轴标签:

scale_x_discrete(labels=c("0-29","30-49","50-64","65-79",">80","All")) +

这可行,但我需要将“>80”标签更改为“≥80”。

但是“≥80”显示为“=80”。

如何显示大于或等于号?

4

4 回答 4

54

使用表达式的替代方法是 Unicode 字符,在这种情况下是 Unicode 字符 'GREATER-THAN OR EQUAL TO' (U+2265)。复制@mnel 的示例

.d <- data.frame(a = letters[1:6], y = 1:6)

ggplot(.d, aes(x=a,y=y)) + geom_point() + 
    scale_x_discrete(labels = c(letters[1:5], "\u2265 80"))

如果您难以记住复杂的表达式语法,或者如果您需要换行符,那么 Unicode 是一个不错的选择,而这些表达式不允许。不利的一面是,特定的 Unicode 字符是否有效取决于您选择的图形设备和字体。

于 2012-11-02T13:53:15.643 回答
21

您可以传递一个表达式(包括在参数中phantom(...)伪造一个前导>=labelscale_x_discrete(...)

例如

 .d <- data.frame(a = letters[1:6], y = 1:6)

 ggplot(.d, aes(x=a,y=y)) + geom_point() + 
    scale_x_discrete(labels = c(letters[1:5], expression(phantom(x) >=80))

在此处输入图像描述

有关?plotmath创建数学表达式和 相关 SO 问题和答案的更多详细信息,请参阅

于 2012-11-02T11:19:23.077 回答
10
plot(5, ylab=expression("T ">="5"))

在此处输入图像描述

于 2015-11-30T09:18:49.100 回答
2

您可以使用

expression("">=80)

所以你的全轴标签看起来像:

scale_x_discrete(labels=c("0-29","30-49","50-64","65-79",expression("">=80),"All")) +

使用 unicode 导出绘图时遇到问题,但表达式函数更一致。

于 2019-10-21T14:43:44.583 回答