Создание новых палитр фигур в ggplot2 и другой графике R

Я хотел бы указать свои собственные палитры форм для ggplot2 хотя бы в качестве вектора для ввода в scale_shape_manual. Мне очень нравится палитра парных фигур из JMP, но я заметил, что в R нет некоторых из этих фигур. В частности, отсутствуют боковые треугольники (например, |> или <|) или закрашенный перевернутый треугольник (например, \/). Они доступны где-нибудь? Если нет, то как я могу указать эти дополнительные формы и есть ли способ заставить ggplot2 использовать их на графиках?


person wdkrnls    schedule 09.06.2015    source источник


Ответы (1)


Вы можете создать свою собственную палитру фигур, указав значения Unicode для нужных символов. Вы можете найти значения Unicode для различных геометрических фигур здесь. Например:

library(ggplot2)

ggplot(mtcars[mtcars$carb %in% 1:4,], 
       aes(wt, mpg, shape=factor(carb), colour=factor(carb))) +
  geom_point(size=5) +
  scale_shape_manual(values=c("\u25BA","\u25C4","\u25BC","\u25B2"))

введите здесь описание изображения

Конечно, вы можете использовать символы Unicode и в базовой графике:

with(mtcars, plot(wt, mpg, pch="\u25BC"))

Не каждый символ Unicode отображается правильно. Я не уверен, почему, но это может быть связано с тем, какие шрифты вы установили.

person eipi10    schedule 09.06.2015
comment
Кроме того, я нашел два пакета для помощи со специальными символами, шрифтами и смайликами: cran.r-project.org/web/packages/emojifont/vignettes/ (автор YX Qiu) и github.com/dill/emoGG/issues (автор Д.Л.Миллер) - person PatrickT; 08.05.2016
comment
Я только что заметил, что в моей системе красный и зеленый символы не отображаются в консоли R (и не печатаются в PDF), хотя они появляются в консоли RStudio, но ни один из 4 символов не отображается. распечатывается даже с cairo_pdf или cairo_ps устройств... Пока единственный вариант - печатать в формате PNG. - person PatrickT; 08.05.2016
comment
@PatrickT Я тоже это заметил. В некоторых случаях вы можете отобразить символы, указав другое начертание шрифта. Вот пример, где я это сделал. Пакет extrafont полезен для добавления новых шрифтов. - person eipi10; 08.12.2016
comment
Спасибо eipi10, очень полезно! - person PatrickT; 08.12.2016