【问题标题】:Unicode Ø symbol with superscript in ggplotggplot中带上标的UnicodeØ符号
【发布时间】:2021-12-05 10:36:42
【问题描述】:

我想把下面的文字放在ggplot图表后面

而且我认为它应该很容易实现。不幸的是,我所有的尝试都以彻底失败告终。 我已经在这个论坛上阅读了十多篇关于这个话题的帖子。我已经做了几十次尝试,仍然没有达到我期望的效果。 顺便说一句,我注意到对 unicode 符号的一种相当奇怪的处理。请比较下表中的标题和副标题。

library(tidyverse)
ggplot()+
  labs(
    title = expression("\u00AE \u00A9, \u00A2, \u00BC, \u00BD, \u00BE, \u00A5, \u00D8, \u00F8"),
    subtitle = "\u00AE \u00A9, \u00A2, \u00BC, \u00BD, \u00BE, \u00A5, \u00D8, \u00F8"
  )+
  annotate(geom="text", label="\u00D828.15^{+0.15}", x=0, y=0.08,parse = TRUE, size=5)+
  annotate(geom="text", label="\u00D8", x=0, y=0, size=5)+
  annotate(geom="text", label="28.15^{+0.15}", x=0.03, y=0.001,parse = TRUE, size=5)+
  xlim(c(-0.1, 0.1))+
  ylim(c(-0.02, 0.1))+
  theme_void()

为什么某些 unicode 符号在放置在 expression 函数中或当我使用 parse 选项时会丢失一些图形?这发生在符号 ¢、¥、¼、½、¾、Ø 上。就我而言,我特别关心符号 Ø。我终于得到了轨迹图上的效果(图表底部的注释)是由两个相邻的注释的繁琐设置创建的。但是,一旦我更改图表的大小,它就会完全崩溃。

有谁知道如何解决这个问题?

非常感谢您的快速回复。不幸的是,它仍然对我不起作用! :-(

library(latex2exp)
library(ggplot2)
label <- TeX("$Ø28.15^{+0.15}$")
qplot(1, "A") +
  annotate(geom = "text", label = label, x = 1, y = 1.1, size = 10) +
  xlab(label)

【问题讨论】:

  • 似乎依赖于平台。我在 Linux 上使用 R 4.0.2 得到了正确的渲染。
  • 我在 Windows 7 Prof 和 R 版本 4.1.1 中使用 RStudion 版本 1.4.1717

标签: r ggplot2 symbols


【解决方案1】:

您可以在数学 ($) 环境中使用 LaTeX 语法自动生成绘图表达式:

library(latex2exp)
library(ggplot2)

label <- TeX("$Ø28.15^{+0.15}$")
label
#> expression(`$Ø28.15^{+0.15}$` = paste("", "Ø28", ".", "15", 
#>     phantom()^{
#>         paste("+0", ".", "15")
#>     }, ""))

qplot(1, "A") +
  annotate(geom = "text", label = label, x = 1, y = 1.1, size = 10) +
  xlab(label)
#> Warning in is.na(x): is.na() applied to non-(list or vector) of type
#> 'expression'

reprex package (v2.0.1) 于 2021 年 10 月 18 日创建

【讨论】:

  • 非常感谢您的快速回复。不幸的是,它仍然对我不起作用! :-( 请查看我的问题更新。
  • 这是您特定系统的编码问题。如果您使用 cairo 将此图导出为 pdf 会发生什么? ggsave(p, filename = 'plot.pdf', device = cairo_pdf)
  • 我得到了与 O 完全相同的效果。
  • 那是你系统的问题。尝试在 windows 中绘制 unicode 字符时搜索编码错误等术语。您的 Windows 语言和本地化设置也可能很重要。
  • 这让我有点吃惊。如果我的系统真的有问题,我将无法获得像 ¥、¼、½、¾ 这样的字符。请注意,当我不使用 expression 函数时,一切都很好(第一张图的副标题)。另一方面,当我使用expression 时,字符不会完全显示。例如,不是 ¾ 我得到 3,而不是 ¥ 我得到 Y,而不是 Ø 我得到 O。好像expression 中的函数出于某种原因改变了这些字符的图形。但是,® 或 © 等字符可以正确打印。
【解决方案2】:

我知道如何修改上面的这个解决方案,也许不那么可爱,但到处都可以使用

library(ggplot2)
label <- "\u00D828.15\U207A\u2070\U00B7\U00B9\u2075" 
 qplot(1, "A") +
     annotate(geom = "text", label = label, x = 1, y = 1.1, size = 10) +
     xlab(label)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 2019-03-26
    • 1970-01-01
    相关资源
    最近更新 更多