如何修复 ggtext 对 Ě 或 Ö 等组合字符的渲染?
How to fix ggtext´s rendering of combining characters like Ě or Ö?
我在使用 **ggtext** 时遇到标签问题,如果我使用 ĚŠČŘŽ 或 ÖÜÄ 等组合字符,element_markdown() 会在我的文本后面添加额外的 spaces/render 空格。我的代码如下所示:
library(ggplot2)
library(tidyverse)
library(ggtext)
df_x <- c(runif(6, min = 1, max = 2))
df_y <- c(rep("A", 3), rep("B", 3))
df_lab <- c("Čžěčh Přóblém", "Gërmän pröbëm töö", as.character(1:4))
tibble(df_x, df_y, df_lab) %>%
ggplot(aes(x = df_x, y = df_y, fill = df_lab)) +
geom_bar(position = "stack", stat = "identity") +
theme(legend.text = element_markdown())
我认为这是一个非常基本的问题,但找不到任何关于如何处理这个问题的信息。
图片:
当我组合 ě 和 ö 时,输出没有问题。我将你的角色从 Čžěčh Přóblém
更改为 Čžěčh Přöblém
,它是 ě
和 ö
的组合。输出看起来还是不错的。查看这段代码并输出:
library(ggplot2)
library(tidyverse)
library(ggtext)
df_x <- c(runif(6, min = 1, max = 2))
df_y <- c(rep("A", 3), rep("B", 3))
df_lab <- c("Čžěčh Přöblém", "Gërmän pröbëm töö", as.character(1:4))
tibble(df_x, df_y, df_lab) %>%
ggplot(aes(x = df_x, y = df_y, fill = df_lab)) +
geom_bar(position = "stack", stat = "identity") +
theme(legend.text = element_markdown())
输出:
图例显示的很好
您也可以使用以下代码更改 system locale
。
Sys.setlocale("LC_CTYPE", "Czech")
示例代码:
library(ggplot2)
library(tidyverse)
library(ggthemes)
Sys.setlocale("LC_CTYPE", "Czech")
tibble(df_x, df_y, df_lab) %>%
ggplot(aes(x = df_x, y = df_y, fill = df_lab)) +
geom_bar(position = "stack", stat = "identity") +
theme_par()+
labs(x="dfx",y="dfy")+
theme(axis.text.x = element_text(hjust = 1, face="bold", size=12, color="black"),
axis.title.x = element_text(face="bold", size=16, color="black"),
axis.text.y = element_text(face="bold", size=12, color="black"),
axis.title.y = element_text(face="bold", size=16, color="black"),
strip.text = element_text(size=10, face="bold"),
plot.title = element_text(size=20, face="bold"),
legend.position = "top",
legend.title = element_blank(),
legend.text = element_text(color = "black", size = 16,face="bold"))
剧情:
或 legend
在 right
一侧
示例数据:
df_x <- c(runif(6, min = 1, max = 2))
df_y <- c(rep("A", 3), rep("B", 3))
df_lab <- c("Čžěčh Přóblém", "Gërmän pröbëm töö", as.character(1:4))
我在使用 **ggtext** 时遇到标签问题,如果我使用 ĚŠČŘŽ 或 ÖÜÄ 等组合字符,element_markdown() 会在我的文本后面添加额外的 spaces/render 空格。我的代码如下所示:
library(ggplot2)
library(tidyverse)
library(ggtext)
df_x <- c(runif(6, min = 1, max = 2))
df_y <- c(rep("A", 3), rep("B", 3))
df_lab <- c("Čžěčh Přóblém", "Gërmän pröbëm töö", as.character(1:4))
tibble(df_x, df_y, df_lab) %>%
ggplot(aes(x = df_x, y = df_y, fill = df_lab)) +
geom_bar(position = "stack", stat = "identity") +
theme(legend.text = element_markdown())
我认为这是一个非常基本的问题,但找不到任何关于如何处理这个问题的信息。
图片:
当我组合 ě 和 ö 时,输出没有问题。我将你的角色从 Čžěčh Přóblém
更改为 Čžěčh Přöblém
,它是 ě
和 ö
的组合。输出看起来还是不错的。查看这段代码并输出:
library(ggplot2)
library(tidyverse)
library(ggtext)
df_x <- c(runif(6, min = 1, max = 2))
df_y <- c(rep("A", 3), rep("B", 3))
df_lab <- c("Čžěčh Přöblém", "Gërmän pröbëm töö", as.character(1:4))
tibble(df_x, df_y, df_lab) %>%
ggplot(aes(x = df_x, y = df_y, fill = df_lab)) +
geom_bar(position = "stack", stat = "identity") +
theme(legend.text = element_markdown())
输出:
图例显示的很好
您也可以使用以下代码更改 system locale
。
Sys.setlocale("LC_CTYPE", "Czech")
示例代码:
library(ggplot2)
library(tidyverse)
library(ggthemes)
Sys.setlocale("LC_CTYPE", "Czech")
tibble(df_x, df_y, df_lab) %>%
ggplot(aes(x = df_x, y = df_y, fill = df_lab)) +
geom_bar(position = "stack", stat = "identity") +
theme_par()+
labs(x="dfx",y="dfy")+
theme(axis.text.x = element_text(hjust = 1, face="bold", size=12, color="black"),
axis.title.x = element_text(face="bold", size=16, color="black"),
axis.text.y = element_text(face="bold", size=12, color="black"),
axis.title.y = element_text(face="bold", size=16, color="black"),
strip.text = element_text(size=10, face="bold"),
plot.title = element_text(size=20, face="bold"),
legend.position = "top",
legend.title = element_blank(),
legend.text = element_text(color = "black", size = 16,face="bold"))
剧情:
或 legend
在 right
一侧
示例数据:
df_x <- c(runif(6, min = 1, max = 2))
df_y <- c(rep("A", 3), rep("B", 3))
df_lab <- c("Čžěčh Přóblém", "Gërmän pröbëm töö", as.character(1:4))