Я организую научную конференцию, и я застрял с простой проблемой.Во время конференции будет около 300 участников, и нам нужно создать бейдж для всех.Имя должно быть 50 × 85 мм .Вопрос в том, как огранить шаблон значка ggplot, сохраняя разрешение исходного графика?
Например, это кадр данных имен участников:
names <- tibble(name = c("Jared Harris", "Stellan Skarsgеrd", "Paul Ritter",
"Jessie Buckley", "Adam Nagaitis", "Con O'Neill",
"Adrian Rawlins", "Sam Troughton", "Robert Emms",
"Emily Watson", "David Dencik", "Mark Lewis Jones",
"Alan Williams", "Alex Ferns", "Ralph Ineson",
"Barry Keoghan","Fares Fares", "Michael McElhatton"))
Я создал шаблон значкаи добавьте в него несколько логотипов конференции:
library(tidyverse)
library(stringr)
library(grid)
library(magick)
# Donwload some sample logos
logo1 <- image_read("https://www.stickpng.com/assets/images/5cb58699cba3dd2a29200cb6.png")
logo2 <- image_read("https://www.stickpng.com/assets/images/5cb58635cba3dd2a29200caa.png")
# Create ggplot object
ggplot(data = names) +
# Add participant's names
geom_text(aes(label = str_wrap(string = str_to_upper(name),
width = 15)),
fontface = 2,
x = 2.5, y = 1) +
# Add conference name
annotate("text", x = 2.5, y = 4,
label = "3-6 september, 2019\nCity,\nName of the Conference") +
# Add plot limits
xlim(c(0, 5)) + ylim(c(0,8.5)) +
# Specify theme
theme_void() %+replace%
theme(panel.border = element_rect(fill = NA,
colour = "grey60"),
strip.text = element_blank()) -> p
# Add conference logos
p + annotation_custom(rasterGrob(logo1, interpolate=TRUE),
xmin=3, xmax=5, ymin=6, ymax=8) +
annotation_custom(rasterGrob(logo2, interpolate=TRUE),
xmin=0, xmax=2, ymin=6, ymax=8) -> p
Потому что мне нужно распечатать его, я сохранил его с функцией pdf
по умолчанию и удивительным ggplus
.
# Install ggplus
devtools::install_github("guiastrennec/ggplus")
pdf("badges/badges.pdf", paper = "a4", width = 31.35, height = 40.52)
ggplus::facet_multiple(plot = p, facets = "name", ncol = 3, nrow = 3) +
annotation_custom(rasterGrob(msu, interpolate=TRUE),
xmin=3, xmax=5, ymin=6, ymax=8) +
annotation_custom(rasterGrob(mnks, interpolate=TRUE),
xmin=0, xmax=2, ymin=6, ymax=8)
dev.off()
Результат выглядит следующим образом:
Aa, и здесь мы сталкиваемся с первой проблемой - размером каждого значка 64,5 × 89,1 мм, не требуется 50 × 85 мм.Как это исправить?
Во-вторых , я живу в России и мне нужно делать значки на русском языке.Поэтому, если я изменю names
фрейм данных на тот, который содержит буквы кириллицы, например:
names <- structure(list(name = c(
"Айбулатов Денис Николаевич",
"Александрин М.Ю.",
"Александровский Алексей Юрьевич",
"Андреев П.В.",
"Антоненко М.В.",
"Атутова Жанна Владимировна",
"Бабич Дмитрий Борисович",
"Баженова Ольга Иннокентьевна",
"Бажин К.И.",
"Барабанов Анатолий Тимофеевич")),
row.names = c(NA,-10L),
class = c("tbl_df", "tbl", "data.frame"))
Все строки с буквами кириллицы сдвигаются на пару дюймов вправо.И вопрос - что за хрень?
Я использую Windows-машину, и моя информация о сеансе:
R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 17763)
Matrix products: default
locale:
[1] LC_COLLATE=Russian_Russia.1251 LC_CTYPE=Russian_Russia.1251
[3] LC_MONETARY=Russian_Russia.1251 LC_NUMERIC=C
[5] LC_TIME=Russian_Russia.1251
attached base packages:
[1] grid stats graphics grDevices utils datasets
[7] methods base
other attached packages:
[1] magick_2.0 png_0.1-7 cowplot_0.9.4 extrafont_0.17
[5] forcats_0.3.0 stringr_1.4.0 dplyr_0.8.1 purrr_0.3.1
[9] readr_1.3.1 tidyr_0.8.3 tibble_2.1.3 ggplot2_3.2.0
[13] tidyverse_1.2.1
loaded via a namespace (and not attached):
[1] Rcpp_1.0.1 cellranger_1.1.0 pillar_1.3.1
[4] compiler_3.5.1 tools_3.5.1 jsonlite_1.5
[7] lubridate_1.7.4 gtable_0.2.0 nlme_3.1-137
[10] lattice_0.20-35 pkgconfig_2.0.2 rlang_0.3.4
[13] cli_1.1.0 rstudioapi_0.8 curl_3.2
[16] haven_2.1.0 Rttf2pt1_1.3.7 withr_2.1.2
[19] xml2_1.2.0 httr_1.3.1 ggplus_0.1
[22] generics_0.0.2 hms_0.4.2 tidyselect_0.2.5
[25] glue_1.3.1 R6_2.4.0 readxl_1.3.1
[28] extrafontdb_1.0 modelr_0.1.2 magrittr_1.5
[31] backports_1.1.3 scales_1.0.0 rvest_0.3.3
[34] assertthat_0.2.1 colorspace_1.4-0 labeling_0.3
[37] stringi_1.2.4 lazyeval_0.2.1 munsell_0.5.0
[40] broom_0.5.1 crayon_1.3.4