R- Как мне преобразовать символ смайлика в кодировке UTF8 в изображение? - PullRequest
3 голосов
/ 06 января 2020

У меня есть длинный вектор, содержащий эмодзи, что-то вроде этого:

emojis <- c("?","?","?","?","?")

, а затем у меня есть их кодировки utf-8, которые я извлек с помощью devtools::install_github( "ThinkRstat/utf8splain"), за которыми следует library(utf8splain), как это , просто для примера: (не совсем точно) с осями X и Y. Я довольно новичок в UTF и R.

Причина, по которой я это делаю, заключается в том, что я использую плагин "imagepreview" в программном обеспечении Gephi. И плагин требует узлов в виде фотографий. Поэтому моя цель состоит в том, чтобы иметь отдельные смайлики в .png и дать им их кодировки utf в качестве имени. Поэтому, когда я импортирую свои данные, я могу просто указать CSV, содержащую utfs, на имена фотографий и выбрать нужные эмодзи. А потом просто нарисуйте это. Я делаю это для исследовательского проекта, и застрял в нем некоторое время. Пожалуйста, помогите, если можете.

Если вы знаете лучший способ сделать это, я был бы очень признателен.

Я в Ubuntu OS. Если вы используете windows, то эмоджи будут отображаться в правильном формате utf и не будут отображаться.

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Другое решение для доступа к png-файлам смайликов состоит в том, чтобы загрузить их из Twitter, который принимает руны в URL-адресах, ссылающихся на png-файлы:

library(tidyverse)
data <- tibble(emojis = c("?","?","?","?","?")) %>% 
  mutate(rune = map_chr(emojis, ~ utf8splain::runes(.)$rune)) %>%    # convert to runes
  mutate(rune = str_remove(rune, fixed("U+"))) %>%                   # remove leading U+
  mutate(emoji_url = paste0("https://abs.twimg.com/emoji/v2/72x72/", # make url
                            tolower(rune), ".png"))

# download the files
map2(data$emoji_url, paste0(data$rune, ".png"), function(x, y) download.file(x, y, method = "curl"))

Это загрузит png-файлы и разместит они находятся в вашем рабочем каталоге.

В базе

Код перехода по желанию не обязателен, то же самое можно сделать в базе:

emojis <- c("?","?","?","?","?")
rune <- sapply(emojis, function(x) utf8splain::runes(x)$rune)
emojiurl <- paste0("https://abs.twimg.com/emoji/v2/72x72/", tolower(rune), ".png")

for (i in seq_along(emojiurl)) {
  download.file(emojiurl[i], paste0(rune[i], ".png"), method = "curl")
}
1 голос
/ 06 января 2020

Вы наносите символы plot, когда должны использовать text.
В приведенном ниже коде график создается с plot, аргумент type = "n", что означает, не участок . Затем добавляется текст (эмодзи).

emojiPlot <- function(photo_enc, emo_char){
  png(paste0(photo_enc, ".png"), units = "cm",
      width = 10, height = 10, res = 600)
  plot(0, 0, xlim = c(-1, 1), ylim = c(-1, 1), type = "n")
  text(0, 0, emo_char)
  dev.off()
}

emojiPlot("emojis_enc[1]", emojis[1])

Файл "emojis_enc[1].png" размещен здесь:

enter image description here

...