【问题标题】:Mathematical (set) symbol in ggplot axis labelggplot轴标签中的数学(集合)符号
【发布时间】:2020-08-19 04:26:13
【问题描述】:

我正在尝试将数学符号包含在 ggplot 轴标签中。考虑以下代码。

library(ggplot2)
df <- data.frame(dose=c("D0.5", "D1", "D2"), len=c(4.2, 10, 29.5))
ggplot(data=df, aes(x=dose, y=len, group=1)) +
  ylab("length")+
  geom_line()+
  geom_point()

我现在想在 y 轴描述中包含 len ("Length") 的范围,并使用符号 Length ∈ [0, 10] 但找不到将“元素”符号放入标签的方法。

【问题讨论】:

    标签: r ggplot2 symbols


    【解决方案1】:

    有一个很棒的帖子here 有不同的方式,这里我使用expression

    ggplot(data=df, aes(x=dose, y=len, group=1)) +
      ylab("length")+
      geom_line()+
      geom_point() +
      ylab(expression("Length " ~ epsilon ~ " [0, 10]"))
    

    编辑: 由于元素的符号是\in,因此表达式代码不起作用,因为in 是一个内置函数。可能有解决方法,但我不得不求助于使用 latex2exp

    library(latex2exp)
    
    
    ggplot(data=df, aes(x=dose, y=len, group=1)) +
      ylab("length")+
      geom_line()+
      geom_point() +
      ylab(TeX(sprintf("Length $\\in$ \\[0, 10\\]")))
    

    【讨论】:

    • 有趣的解决方法。同样,使用"\U03F5" 会给你一个epsilon。不幸的是,它与 OP 所要求的 unicode 字符的“元素”并不完全相同。
    • 要使用的符号上的错字,感谢您的指出。乳胶符号是\in,它是内置的并会导致问题,似乎是唯一无法使用此方法的符号。我觉得分享还是有用的
    • 这也只能给我一个正方形 - 这是我的系统的问题 - 我该如何解决这个问题?
    【解决方案2】:

    对于特殊符号,您可以通过转义字符 \U#### 引用它们的 Unicode 值。 ∈是Unicode (U+2208),所以使用\U2208可以粘贴∈符号。

    所以:

    > 'Length \U2208 [0, 10]'
    [1] "Length ∈ [0, 10]"
    

    然后你可以在你的情节代码中使用ylab('Length \U2208 [0, 10]')

    【讨论】:

    • 谢谢。有没有办法解决符号不显示的问题 - 而是典型的编码错误的正方形?
    • 据我所见,ggplot 中似乎不支持该字符。我尝试了一些事情,但没有找到解决问题的好方法 - 我能够在控制台中获得输出,但不是在绘图上。
    • 是的,我也遇到了同样的情况 - 控制台工作正常,但不适用于 ggplot。有什么事要做吗?
    • 我已经尝试调整字体(参见extrafonts 包),但到目前为止还没有运气。如果我通过 png(图形设备)或 pdf(cairo_pdf 或标准)导出似乎也没关系。它也不能使用annotate()annotate_custom() 正确打印,这让我发现这个问题与函数如何创建绘图完全无关,而是如何通过 R 中的图形设备实现绘图。唯一的解决方法是创建一个包含角色的图像文件并使用自定义注释将其放置在绘图之外。
    猜你喜欢
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多