Я хотел бы использовать формы Unicode в ggplot2
geom_point()
(в частности, такие стрелки, как ↘, Unicode "\ u2198" или LaTeX \ searrow), как в shape = "\u2198"
, которые не являются шрифтом по умолчанию,В этом неотвеченном сообщении , @ Laserhedvig Комментарий"кажется, что проблема заключается в шрифте. По-видимому, базовые шрифты по умолчанию не содержат поддержку этих конкретных символов. Теперь, какизменить шрифт для аргумента формы geom_point ()? "
Это решение для Unicode в axes.text
использует theme(axis.text.x = element_text(family = "FreeSerif"))
, а это решение использует theme(text=element_text(size=16, family="Comic Sans MS"))
для всех text
, но как я могу это сделать для shape
?
- Есть ли общее решение использовать Unicode для
shape
?(Должен ли я как-то использовать cairo
и / или аргумент шрифта family
?) - Если нет, есть ли какой-либо другой набор форм стрелок?(Мой поиск фигур и глифов, в том числе в документации
scale_shape
оказался пустым.)
В моем случае мне нужен слой 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" (т.е. "↘") не работает
Редактировать: Благодаря комментарию djangodude об использовании шрифта ggplot я нашел аргумент family
geom_text
, который допускает использование разных шрифтов.Таким образом, «формы» Unicode могут отображаться как символы с geom_text
.Тем не менее, легенда для geom_text
является фиксированной на "a" .И темы управляют только отображением без данных , поэтому аргумент 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 отображает юникод, но не в легенде
Кажется, аргумент shape
действительно правильный способ сделать это, верно?
Я пытался установить Sys.setenv(LANG = "en_US.UTF-8")
и Sys.setenv(LANG = "Unicode")
безрезультатно, но, возможно, некоторыенастройка глобального языка повлияет на shape
?
Большое спасибо за любую помощь!
Примечание: Эти решения для Unicode череп и скрещенные кости и наполовину заполненные точки не имеют легенды и не будет работать без правильного шрифта:
Чтобы получить правильный шрифт:
Найдите установленный шрифт, который содержит символ Unicode, который выискать.Я нашел эти инструкции полезными.
Импорт установленных шрифтов в 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