tmap R - изменить шрифт заголовка тематического сюжета с простого на курсив, но оставить шрифт легенды простым - PullRequest
0 голосов
/ 07 ноября 2018

Я хотел бы изменить шрифт для основного заголовка тематического сюжета, используя пакет tmap в R с 'обычного' на курсив , но оставьте шрифт заголовка легенды и текста «простым».

Однако, когда я изменяю аргумент fontface в функции lm_layout () , он меняет грань шрифта всего текста на карте. Можно ли изменить только начертание шрифта для основного заголовка в tmap?

Моя попытка воспроизвести воспроизводимый пример (который, к сожалению, изменяет шрифт всего текста на карте на курсив ) ниже:

library(tmap)
data("World")

tm_shape(World) +
tm_polygons("HPI", title = "World - HPI") +
  tm_layout(main.title = "HPI",
            main.title.position = "center",
            fontface = 3) 

Edit: Martijn Tennekes, автор пакета tmap, добавил 10 аргументов в tm_layout (и, следовательно, также опции tmap), чтобы разрешить контроль над этим: локальный шрифт и семейство шрифтов для заголовка (карты), основного заголовка, панели .label, legend.title и legend.text.

tm <- tm_shape(World) +
tm_polygons(c("HPI", "economy"), title = c("Legend 1", "Legend 2")) +
tm_layout(main.title = "Main Title",
          main.title.position = "center",
          title = c("Title 1", "Title 2"),
          panel.labels = c("Panel 1", "Panel 2"))

# global setting
tm + tm_layout(fontface = 3) 

# local setting
tm + tm_layout(main.title.fontface = 1, title.fontface = 2, panel.label.fontface = 3, legend.text.fontface = 4, legend.title.fontfamily = "serif")

1 Ответ

0 голосов
/ 11 декабря 2018

Протестировано для tmap_2.1-1 версии.

Хотя заголовок легенды в tm_polygons можно установить курсивом через title = expression(italic(your-text)), заголовок сюжета, по-видимому, не разрешает expression с. Одним из обходных путей может быть использование мощности редактирования пакета grid:

library(tmap)
library(grid)

data("World")

tm_shape(World) +
  tm_polygons("HPI", title = expression(italic(World - HPI))) + # set legend title to italic
  tm_layout(main.title = "HPI", # unfortunately, does not allow `expression`; try the `grid` hack
            main.title.position = "center") 

# Convert to gTree/list of grobs
g <- grid.grab()
View(g) # check the structure of the gTree; helps with identifying graphical elements
# Edit the fontface of the main title - from 1 (plain text) to 3 (italic); must be integer
g[["children"]][[1]][["children"]][["main_title"]][["children"]][[1]][["gp"]][["font"]] <- 3L
# Draw the edited gTree
grid.newpage(); grid.draw(g)

enter image description here

...