Изменение шрифтов в ggplot2
Я ищу способ изменить типы шрифтов в ggplot. На данный момент я был бы достаточно счастлив просто изменить шрифты на семейство шрифтов "курьер", но в конечном итоге моя цель-вызвать пользовательский шаблон шрифта-любой вход в этот последний момент будет очень оценен.
Я сделал немного домашней работы, глядя на следующие сообщения и статьи:
- ggplot2: как изменить шрифт меток в geom_text
R Новости Объем 6/2,
Нестандартные шрифты в PostScript и PDF
Графика, Меррелл и Рипли.- ComputerModern шрифт в ggplot2 графики?
Это может быть потому, что я все еще безнадежный любитель с ggplot2, но я даже не смог переключить шрифты диаграммы на courier. Какая-нибудь помощь? Я включил данные для рассматриваемой диаграммы ниже вместе с кодом, поэтому, надеюсь, все это достаточно легко следовать.
7 ответов:
Я думаю, что ваш ответ в порядке, но вы можете сделать это более просто:
install.packages("extrafont");library(extrafont) font_import("Trebuchet MS") library(ggplot2) qplot(1:10)+theme(text=element_text(family="Trebuchet MS"))
отсортировал мой запрос с довольно минимальными хлопотами. Это было двухэтапное решение, к которому я бы не пришел, не следуя советам членов, которые ответили.
чтобы изменить текст ggplot по умолчанию, я адаптировал код, который Брэндон передал мне по адресу:
http://johndunavent.com/combined-line-and-bar-chart-ggplot2
где John Dunavent создает функцию theme_min, которую можно изменить, чтобы предоставить параметры по умолчанию для a ggplot, в том числе с использованием шрифтов, импортированных из Windows с помощью команды windowsFonts. Моя адаптация его кода выглядит так:
theme_min = function (size=10, font=NA, face='plain', panelColor=backgroundColor, axisColor='#999999', gridColor=gridLinesColor, textColor='black') { theme_text = function(...) ggplot2::theme_text(family=font, face=face, colour=textColor, size=size, ...) opts( axis.text.x = theme_text(), axis.text.y = theme_text(), axis.line = theme_blank(), axis.ticks = theme_segment(colour=axisColor, size=0.25), panel.border = theme_rect(colour=backgroundColor), legend.background = theme_blank(), legend.key = theme_blank(), legend.key.size = unit(1.5, 'lines'), legend.text = theme_text(hjust=0), legend.title = theme_text(hjust=0), panel.background = theme_rect(fill=panelColor, colour=NA), panel.grid.major = theme_line(colour=gridColor, size=0.33), panel.grid.minor = theme_blank(), strip.background = theme_rect(fill=NA, colour=NA), strip.text.x = theme_text(hjust=0), strip.text.y = theme_text(angle=-90), plot.title = theme_text(hjust=0), plot.margin = unit(c(0.1, 0.1, 0.1, 0.1), 'lines')) } ##Create a custom font type. Could be 'F', 'TEST', whatever windowsFonts(F = windowsFont('Wide Latin')) ##and insert this line of code into the original code I list above: + theme_min(font='F', size=10)неловко, нет никакого способа (который я нашел), чтобы в целом изменить настройки шрифта для объектов geom_text перед созданием участка. Однако решение Джеймса выше отлично работало для этого. Вместо использования стандартного шрифта я установил fontfamily= "F", чтобы ввести пользовательский шрифт, который я выбрал в theme_min (), т. е.:
grid.gedit("GRID.text",gp=gpar(fontfamily="F"))надеюсь, это полезно для любых других пользователей, желающих изменить шрифты на своих графиках.
ура всем, кто помог мне в этом разобраться! Аарон
взгляните на семейный аргумент theme_text ()
dummy <- data.frame(A = rnorm(10), B = rnorm(10)) ggplot(dummy, aes(x = A, y = B)) + geom_point() #helvetica = default ggplot(dummy, aes(x = A, y = B)) + geom_point() + opts(axis.title.x = theme_text(family = "sans", face = "bold")) #times ggplot(dummy, aes(x = A, y = B)) + geom_point() + opts(axis.title.x = theme_text(family = "serif", face = "bold")) #courier ggplot(dummy, aes(x = A, y = B)) + geom_point() + opts(axis.title.x = theme_text(family = "mono", face = "bold"))
вдохновленный пост on kohskeблог я придумал такой:
theme_set( theme_bw( base_family= "serif")) theme_update( panel.grid.minor= theme_blank(), panel.grid.major= theme_blank(), panel.background= theme_blank(), axis.title.x= theme_blank(), axis.text.x= theme_text( family= "serif", angle= 90, hjust= 1 ), axis.text.x= theme_text( family= "serif"), axis.title.y= theme_blank()) theme_map <- theme_get() theme_set( theme_bw())Теперь, когда я хочу использовать эту конкретную тему:
last_plot() + theme_mapYMMV.
кстати, если бы у меня была власть, я бы проголосовал за предпочтительный ответ:
> grid.gedit("GRID.text",gp=gpar(fontfamily="mono")) Error in editDLfromGPath(gPath, specs, strict, grep, global, redraw) : 'gPath' (GRID.text) not foundне уверен, что это означает. Мне также не предложили ссылку, чтобы прокомментировать этот ответ; возможно, что-то изменилось на сайте.
вы можете установить шрифт меток, созданных
geom_textСgrid.gedit:grid.gedit("GRID.text",gp=gpar(fontfamily="mono"))вызовите это после того, как вы создали свой оригинальный сюжет.
также проверьте пакет Cairo, который поддерживает полное переключение всех шрифтов с теми, которые вы выбираете. http://rforge.net/doc/packages/Cairo/00Index.html
Это кажется самым простым решением, за мои деньги.
некоторые данные воспроизведения в df и превращены в простой график "p" с красивыми длинными метками x и y, поэтому мы можем видеть изменение шрифта:
df <- data.frame(A = rnorm(10), B = rnorm(10)) p = ggplot(data = df, aes(x = A, y = B)) + geom_point() p = p + xlab("A long x-string so we can see the effect of the font switch") p = p + ylab("Likewise up the ordinate")и мы просматриваем сюжет по умолчанию в любом шрифте:
pтеперь мы переходим к Optima, добавляя некоторые хорошие название и подзаголовок, чтобы погреться в славе Optima:
label = "Now we switch to Optima" subtitle = "Optima is a nice font: https://en.wikipedia.org/wiki/Optima#Usages"и после всего этого, мы печатаем в новом шрифт
# the only line you need to read: p + theme(text = element_text(family = "Optima", , face = "bold")) p = p + ggtitle(label = label, subtitle = subtitle) p

Comments