Термин «контекст» иногда используется для ссылки на объект, на который ссылается this . Его использование неуместно, потому что оно не подходит ни семантически, ни технически с помощью ECMAScript в этом .
«Контекст» означает обстоятельства, окружающие что-то, что добавляет смысл , или некоторая предшествующая и следующая информация, которая дает дополнительный смысл. Термин «контекст» используется в ECMAScript для ссылки на контекст выполнения , который является всеми параметрами, областью действия и этой в рамках некоторого исполняемого кода.
Это показано в разделе 10.4.2 ECMA-262 :
Установите значение ThisBinding на то же значение, что и ThisBinding для контекста выполнения вызова
, в котором четко указано, что этот является частью контекста выполнения.
Контекст выполнения предоставляет информацию, которая добавляет смысл в код, который выполняется , Он содержит гораздо больше информации о том, что только thisBinding .
Таким образом, значение этого не является «контекстом», это всего лишь одна часть выполнения контекст. Это, по сути, локальная переменная, которая может быть задана вызовом любого объекта и в строгом режиме для любого значения вообще.
Вы просто пропустили шаг инициализации, я думаю.
Вы можете видеть, какие шрифты у вас есть с помощью команды 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
, с помощью следующего кода snippet:
> 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)
Другой вариант - использовать пакет showtext
, который поддерживает больше типов шрифтов (TrueType, OpenType, Type 1, веб-шрифты и т. д.) и больше графических устройств и избегает использования внешнего программного обеспечения, такого как как Ghostscript.
# install.packages('showtext', dependencies = TRUE)
library(showtext)
### Import Google Fonts
# https://fonts.google.com/featured/Superfamilies
font_add_google("Montserrat", "Montserrat")
font_add_google("Roboto", "Roboto")
# 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"
### Load font from search path into showtext
# 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"
showtext_auto() ## automatically use showtext for new devices
# Need to open Windows graphics device as
# showtext doesn not work well with RStudio built-in graphics device
# https://github.com/yixuan/showtext/issues/7
# https://journal.r-project.org/archive/2015-1/qiu.pdf
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)
[/g1]
## Save to PNG device
ggsave("plot_showtext.png", plot = a, width = 6, height = 6, dpi = 96)
### Save to PDF
pdf("plot_showtext.pdf", 6, 6)
print(a)
dev.off()
showtext_auto(FALSE) ## turn off if no longer needed
mono||sans
(они пока не отличаются), аserif``, but not the actually name like
«TT Times New Roman», but additionally, I not sure that my
loadFonts` был успешным. Когда я вызываюfonts()
, у меня есть список из почти 300 шрифтов, но я предполагаю, что они не были установлены в локальную среду, что делает их доступными для устройства Windows. Я не уверен, что это имеет какой-то смысл, но я попытался предоставить обновление моего исходного вопроса с помощью фрагментов, которые могут помочь. Еще раз спасибо! – EngBIRD 30 December 2015 в 16:18wf[which(wf=="Comic Sans MS")]
дает$``Comic Sans MS`` [1] "Comic Sans MS"
– Mike Wise 30 December 2015 в 16:52