gpt4 book ai didi

r - ggplot shape = Unicode(例如 "\u2198"或 LaTeX\searrow 之类的箭头)?

转载 作者:行者123 更新时间:2023-12-04 13:59:13 27 4
gpt4 key购买 nike

我想在 ggplot2 中使用 Unicode 形状geom_point() (特别是像 ↘、Unicode "\u2198"或 LaTeX\searrow 这样的箭头),如 shape = "\u2198" , 不是默认字体。在 this unanswered post , @Laserhedvig commented “问题似乎出在字体上。显然,基本默认字体不包含对这些特定字形的支持。现在,如何更改 geom_point() 的 shape 参数的字体?”

This solution用于 Unicode axes.text用途 theme(axis.text.x = element_text(family = "FreeSerif")) , 和 this solution用途 theme(text=element_text(size=16, family="Comic Sans MS"))所有 text ,但我如何为 shape 执行此操作?

  • 是否有针对 shape 使用 Unicode 的通用解决方案? ? (我必须以某种方式使用 cairo 和/或字体 family 参数吗?)
  • 如果没有,是否还有其他一些箭头形状? (我搜索箭头形状和字形,包括在 scale_shape documentation 中,结果为空。)

  • 就我而言,我需要一个 ggplot2 层来显示对离散类别中时间点变化方向的定性预测。

    一个例子:
    library(dplyr)
    library(ggplot2)

    d <- tibble(year = c(1, 1, 2, 2),
    policy = rep( c('policy 1', 'policy 2'), 2),
    prediction = c(NA, 'increase', 'decrease', NA),
    predictionUnicode = c(NA, '\u2197', '\u2198', NA))

    ggplot(d) +
    geom_point(aes(x = year, y = policy, color = prediction), shape = "\u2198")

    shape = "\u2198" (i.e. "↘") does not work

    编辑:感谢 djangodude 关于 ggplot 字体使用的评论,我找到了 family geom_text 的论据, 允许使用不同的字体。因此,Unicode“形状”可以用 geom_text 绘制为字符。 .但是, geom_text 的图例是 fixed to "a" .和 themes only control non-data display ,所以 base_family参数不适用于 shape .
    ggplot(d) + 
    geom_tile( aes(x = year, y = policy), color = "black", fill = "white") +
    # geom_point does not allow new fonts?
    geom_point(aes(x = year, y = policy,
    color = prediction), shape = "\u2198") +
    # geom_text does allow new fonts, but the legend text is fixed to "a"
    geom_text(aes(x = year, y= policy,
    color = prediction,
    label = predictionUnicode),
    family = "Calibri") +
    scale_x_continuous(breaks = c(1,2)) +
    theme_gray(base_family = "Calibri")

    geom_text plots unicode, but not in the legend

    看来 shape争论真的是这样做的正确方法,对吗?

    我试过设置 Sys.setenv(LANG = "en_US.UTF-8")Sys.setenv(LANG = "Unicode")没有效果,但也许某些全局语言设置会影响 shape ?

    非常感谢您的帮助!

    注:这些 Unicode 解决方案 skull and crossboneshalf-filled points没有图例,没有正确的字体将无法工作:

    要获得正确的字体:
  • 查找包含您要查找的 Unicode 字符的已安装字体。我找到了 these instructions有帮助。
  • 将已安装的字体导入 R
  • library(extrafont)
    font_import()
    fonts()
    sessionInfo()
    R version 3.5.2 (2018-12-20)
    Platform: x86_64-apple-darwin15.6.0 (64-bit)
    Running under: macOS Mojave 10.14.3

    最佳答案

    使用 shape="\u2198"而不是 \u8600 .使用 \u 指定字符时表示法,该值需要为十六进制。 8600 是 Unicode 字符 LOWER RIGHT ARROW 的十进制值;十六进制值为 2198。

    关于r - ggplot shape = Unicode(例如 "\u2198"或 LaTeX\searrow 之类的箭头)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54870912/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com