将轴文本方向更改为从右到左

Change axis text direction to right-to-left

在阿拉伯语和希伯来语等从右到左的语言中,如何调整 ggplot2 文本元素的文本方向? 请注意,我不是在谈论对齐方式(由 hjust 控制),而是文本呈现的实际方向(相当于 CSS direction: rtl;)。 因此,这不是 this question.

的复制

这是一个最小的可重现示例:

library(ggplot2)
library(tibble)

example1 <- tribble(
  ~item,
  "האם יורד גשם?"
)

# or as ordinary data frame, to avoid 'tibble' dependency
example1 <- data.frame(item = "האם יורד גשם?")

ggplot(example1, aes(item)) + 
  geom_bar() + 
  theme(axis.text.x = element_text(size = 25))

我放大了轴文本 x 来说明我的意思。 代码生成如下图表,注意问号在文本的右侧,我希望它出现在文本的左侧。在tibble中example1没问题(虽然看起来"opposite",问号结束了句子。)

你要把原来的问号改一下,然后就ok了:

library(ggplot2)
library(tibble)
example1 <- tribble(
  ~item,
  "?האם יורד גשם"
)

ggplot(example1, aes(item)) + 
geom_bar() + 
theme(axis.text.x = element_text(size = 25))

您可以使用 "RIGHT-TO-LEFT EMBEDDING" ("Treat the following text as embedded right-to-left") 的 Unicode 控制字符:u202B。参见 Explicit Directional Embeddings

example1$item <- paste("\u202B", example1$item)
ggplot(example1, aes(item)) + 
   geom_bar() +
   theme(axis.text.x = element_text(size = 25))