Давным-давно я изменил свой ggplot2
шрифт, используя windowsFonts(Times=windowsFont("TT Times New Roman"))
для его изменения. Теперь я не могу от этого избавиться.
В попытку набора family=""
в ggplot2
theme()
я не могу показаться , чтобы произвести изменения в шрифтах , как я скомпилировать MWE ниже с разными семействами шрифтов.
library(ggplot2)
library(extrafont)
loadfonts(device = "win")
a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
ggtitle("Fuel Efficiency of 32 Cars") +
xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
theme(text=element_text(size=16,
# family="Comic Sans MS"))
# family="CM Roman"))
# family="TT Times New Roman"))
# family="Sans"))
family="Serif"))
print(a)
print("Graph should have refreshed")
R возвращает предупреждение font family not found in Windows font database
, но я следил за учебником (если я смогу найти его снова, я обновлю ссылку здесь), в котором говорится, что это нормально, а не проблема. Кроме того, в какой-то момент это сработало, потому что на моем графике когда-то использовался шрифт типа arial или helvitica. Я думаю, что это всегда было настоящим предупреждением даже во время первоначальной миграции.
ОБНОВИТЬ
когда я запускаю windowsFonts()
свой вывод
$ serif [1] "TT Times New Roman"
$ sans [1] "TT Arial"
$ mono [1] "TT Courier New"
Но это после того, как я побежал, font_import()
поэтому могу только сделать вывод, что мои шрифты не сохраняются в нужном месте. Код, который выполнил font_import()
запрос, фактически загружает библиотеки:
LocalLibraryLocation <- paste0("C:\\Users\\",Sys.getenv("USERNAME"),"\\Documents","\\R\\win-library\\3.2");
.libPaths(c(LocalLibraryLocation, .libPaths()))
windowsFonts
исчез из grDevices после 3.4.1 . Код здесь нуждается в обновлении.Ответы:
Думаю, вы просто пропустили шаг инициализации.
Вы можете увидеть, какие шрифты у вас есть, с помощью команды
windowsFonts()
. Например, мой выглядит так, когда я начал смотреть на это:> windowsFonts() $serif [1] "TT Times New Roman" $sans [1] "TT Arial" $mono [1] "TT Courier New"
После установки пакета extraFont и его выполнения
font_import
(это заняло около 5 минут):library(extrafont) font_import() loadfonts(device = "win")
У меня было много более доступным - спорно, слишком много, конечно, слишком много, чтобы перечислить здесь.
Затем я попробовал ваш код:
library(ggplot2) library(extrafont) loadfonts(device = "win") a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() + ggtitle("Fuel Efficiency of 32 Cars") + xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") + theme(text=element_text(size=16, family="Comic Sans MS")) print(a)
давая это:
Обновить:
Вы можете найти имя шрифта, который вам нужен для
family
параметра,element_text
с помощью следующего фрагмента кода:> names(wf[wf=="TT Times New Roman"]) [1] "serif"
А потом:
library(ggplot2) library(extrafont) loadfonts(device = "win") a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() + ggtitle("Fuel Efficiency of 32 Cars") + xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") + theme(text=element_text(size=16, family="serif")) print(a)
дает:
источник
mono||sans
( пока они выглядят не иначе) иserif``, but not the actually name like
«TT Times New Roman», but additionally, I not sure that my
loadFonts` успешно. Когда я звоню, уfonts()
меня есть список из почти 300 шрифтов, но я предполагаю, что они не были установлены в локальной среде, что делает их доступными для устройства Windows. Я не уверен, имеет ли это какой-либо смысл, но я попытался обновить свой исходный вопрос с помощью фрагментов, которые могут помочь. Еще раз спасибо!wf[which(wf=="Comic Sans MS")]
уступает$``Comic Sans MS`` [1] "Comic Sans MS"
Другой вариант - использовать
showtext
пакет, который поддерживает больше типов шрифтов (TrueType, OpenType, Type 1, веб-шрифты и т. Д.) И больше графических устройств, и избегает использования внешнего программного обеспечения, такого как Ghostscript.# install.packages('showtext', dependencies = TRUE) library(showtext)
Импортируйте шрифты Google
# https://fonts.google.com/featured/Superfamilies font_add_google("Montserrat", "Montserrat") font_add_google("Roboto", "Roboto")
Загрузить шрифт из текущего пути поиска в
showtext
# Check the current search path for fonts font_paths() #> [1] "C:\\Windows\\Fonts" # List available font files in the search path font_files() #> [1] "AcadEref.ttf" #> [2] "AGENCYB.TTF" #> [428] "pala.ttf" #> [429] "palab.ttf" #> [430] "palabi.ttf" #> [431] "palai.ttf" # syntax: font_add(family = "<family_name>", regular = "/path/to/font/file") font_add("Palatino", "pala.ttf") font_families() #> [1] "sans" "serif" "mono" "wqy-microhei" #> [5] "Montserrat" "Roboto" "Palatino" ## automatically use showtext for new devices showtext_auto()
Сюжет: необходимо открыть графическое устройство Windows, поскольку
showtext
оно не работает со встроенным графическим устройством RStudio# https://github.com/yixuan/showtext/issues/7 # https://journal.r-project.org/archive/2015-1/qiu.pdf # `x11()` on Linux, or `quartz()` on Mac OS windows() myFont1 <- "Montserrat" myFont2 <- "Roboto" myFont3 <- "Palatino" library(ggplot2) a <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() + ggtitle("Fuel Efficiency of 32 Cars") + xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") + theme(text = element_text(size = 16, family = myFont1)) + annotate("text", 4, 30, label = 'Palatino Linotype', family = myFont3, size = 10) + annotate("text", 1, 11, label = 'Roboto', hjust = 0, family = myFont2, size = 10) ## On-screen device print(a)
## Save to PNG ggsave("plot_showtext.png", plot = a, type = 'cairo', width = 6, height = 6, dpi = 150) ## Save to PDF ggsave("plot_showtext.pdf", plot = a, device = cairo_pdf, width = 6, height = 6, dpi = 150) ## turn showtext off if no longer needed showtext_auto(FALSE)
Изменить : еще один обходной путь для использования
showtext
в RStudio. Запустите следующий код в начале сеанса R ( источник )trace(grDevices::png, exit = quote({ showtext::showtext_begin() }), print = FALSE)
источник
Простой ответ, если не хочешь устанавливать ничего нового
Чтобы изменить все шрифты в вашем сюжете.
plot + theme(text=element_text(family="mono"))
Гдеmono
ваш выбранный шрифт.Список вариантов шрифта по умолчанию:
R не имеет большого охвата шрифтов, и, как указывает Майк Уайз , R использует разные имена для общих шрифтов.
На этой странице подробно рассматриваются шрифты по умолчанию.
источник
Поздно к вечеринке, но это может быть интересно для людей, которые хотят добавить пользовательские шрифты в свою
ggplots
внутреннююshiny
приложения на shinyapps.io.Вы можете:
www
каталоге: например ,IndieFlower.ttf
из здесьЭто приводит к следующему верхнему разделу внутри
app.R
файла:dir.create('~/.fonts') file.copy("www/IndieFlower.ttf", "~/.fonts") system('fc-cache -f ~/.fonts')
Полный пример приложения можно найти здесь .
источник
Чтобы изменить шрифт глобально для графиков ggplot2.
theme_set(theme_gray(base_size = 20, base_family = 'Font Name' ))
источник