r - 将英语数字转换为 ggplot 的波斯数字

标签 r ggplot2 farsi

我正在使用 ggplot2 进行数据可视化项目.
图中获得的所有数字(包括 x 轴和 y 轴以及图中的数字)均为英文格式,如下图所示:
example plot
但我希望所有图中的数字都是波斯语(例如, ۲۰۱۵ 而不是 2015)。
我有很多不同数字的地块。谁能帮我将图中的英文数字转换为波斯语?

最佳答案

方法 1 - 替换数字
我发现你在另一个问题中写的这个函数:

convert_english_to_farsi <- function(x) {
  persian <- "\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u06F0\u06F1\u06F2\u06F3\u06F4\u06F5\u06F6\u06F7\u06F8\u06F9"
  english <- "\U0030\U0031\U0032\U0033\U0034\U0035\U0036\U0037\U0038\U0039\U0030\U0031\U0032\U0033\U0034\U0035\U0036\U0037\U0038\U0039"
  return(chartr(english, persian, x))
}
这实际上对我很有效(我检查了 here ):
convert_english_to_farsi(123456)
#> [1] "۱۲۳۴۵۶"
您可以将此函数用作 labels 中大多数 scale_* 函数中的 ggplot2 参数。例如,如果我们想更改某个图的 y 轴标签(economics 包含在 ggplot2 中,因此这是可重现的):
library(ggplot2)
ggplot(economics, aes(x = date, y = unemploy)) +
  geom_line() +
  scale_y_continuous(labels = convert_english_to_farsi)
这里的最高数字应该是 12,000,转换为 ۱۲۰۰۰,这看起来是正确的。

reprex package (v1.0.0) 于 2021-02-07 创建
方法 2 - 替换字体
或者,您可以使用使用波斯数字的不同字体。我找到了一个 here 。在 Windows 中下载并安装它。然后使用 extrafont 包加载它:
library(extrafont)
#> Registering fonts with R
font_import(
  path = "~/Fonts", # I placed only the downloaded ttf file here so only the relevant font is imported
  recursive = FALSE
)
您可以使用以下方法检查可用字体:
fonts()
#> [1] "Persian Pager Number"
现在更改 ggplot2 主题中的字体,如下所示:
ggplot(economics, aes(x = date, y = unemploy)) +
  geom_line() +
  theme_minimal(base_family = "Persian Pager Number")

关于r - 将英语数字转换为 ggplot 的波斯数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66017323/

相关文章:

R-连分数

r - (函数(el,elname): "plot.title.position" is not a valid theme element name 中出现错误

r - 使用 oob 将 ggplot2 中的值更改为另一种颜色

Angular 将数字转换为波斯语

sql-server - 在不同编码的 SQL Server 中搜索波斯语字符和单词

read.table 意外地将 "T"解释为 TRUE

r - 将 NA 移到底部

javascript - R Shiny 的selectizeInput : set minimum for amount of inputs

r - 如何使用 r 中的 ggplot2 和 gridExtra 包将一个 grob 对象排列在另一个对象中

php - 如何从网址获取波斯语/阿拉伯语字符然后显示