Как увеличить размер шрифта на графике в R?

147

Я смущен. Как правильно увеличить размер шрифта текста в заголовке, надписях и других местах сюжета?

Например

x <- rnorm(100)
hist(x, xlim=range(x), xlab= "Variable Label", 
     ylab="density", main="Title of plot", prob=TRUE, ps=30)

psАргумент не меняет размера шрифта (но он говорит в R справке , ?parчто это за «кеглю текста (но не символы)».

Также возможно ли отделить изменение размера шрифта от функции печати, например hist?

Тим
источник
Возможный дубликат Как изменить размер метки R-сюжета
Waldir

Ответы:

140

Вы хотите что-то вроде cex=1.5аргумента, чтобы масштабировать шрифты на 150 процентов. Но посмотрите, help(par)как есть cex.lab, cex.axis...

Дирк Эддельбюттель
источник
1
Спасибо! В чем разница с "ps = 1,5"?
Тим
5
почему cex = 1.5 не работает? Но нужно ли указывать для каждой части в терминах cex.lab, cex.axis, cex.main? Для чего нужен cex = 1,5?
Тим
2
Вы читали help(par)о ps? Насколько я могу судить, текст не кажется связанным.
Дирк Эддельбюттель
2
Так оно и есть, отчасти для обратной совместимости с предыдущими реализациями языка S.
Дирк Эддельбюттель
3
cex - коэффициент увеличения Значение по умолчанию равно 1. Если вам нужно указать размеры шрифта, вам лучше подготовиться к изучению документации, начиная с «Устройства», «pdfFonts», «pdf», «embedFonts» и многих других.
IRTFM
124

Таким образом, чтобы подвести итог существующего обсуждения, добавив

cex.lab=1.5, cex.axis=1.5, cex.main=1.5, cex.sub=1.5

на вашем графике, где 1,5 может быть 2, 3 и т. д., а значение 1 по умолчанию увеличит размер шрифта.

x <- rnorm(100)

cex ничего не меняет

hist(x, xlim=range(x),
     xlab= "Variable Lable", ylab="density", main="Title of plot", prob=TRUE)

hist(x, xlim=range(x),
     xlab= "Variable Lable", ylab="density", main="Title of plot", prob=TRUE, 
     cex=1.5)

введите описание изображения здесь

Добавьте cex.lab = 1,5, cex.axis = 1,5, cex.main = 1,5, cex.sub = 1,5

hist(x, xlim=range(x),
     xlab= "Variable Lable", ylab="density", main="Title of plot", prob=TRUE, 
     cex.lab=1.5, cex.axis=1.5, cex.main=1.5, cex.sub=1.5)

введите описание изображения здесь

Джером англим
источник
2
Кстати, если вы пытаетесь изменить ось в гистограмме (скажем, для графика важности переменной в randomForest или GBM), вам нужно использовать cex.names(если вы человек, который читает вещи с вертикальной позиции, вы можете также хочу las=2)
Geneorama
22

Обратите внимание, что « cex » действительно меняет вещи, когда сюжет сделан с текстом. Например, участок агломерационной иерархической кластеризации:

library(cluster)
data(votes.repub)
agn1 <- agnes(votes.repub, metric = "manhattan", stand = TRUE)
plot(agn1, which.plots=2)

создаст сюжет с текстом нормального размера:

введите описание изображения здесь

и plot(agn1, which.plots=2, cex=0.5)будет производить это:

введите описание изображения здесь

OskrSaSi
источник
Работа faces2тоже (от лиц
Черноффа
В моем примере мне пришлось применять cex не для построения графика, а для непосредственного воздействия на внутренний объект:plot(ci(roc(data$a, data$b, auc=TRUE, of="auc", print.auc=TRUE, print.auc.cex=1.5, plot=TRUE), of="thresholds", thresholds="best")))
Tapper
21

Методом проб и ошибок я определил следующее, чтобы установить размер шрифта:

  1. cexне работает hist(). Используйте cex.axisдля чисел на осях, cex.labдля меток.
  2. cexне работает axis()либо. Используйте cex.axisдля чисел на осях.
  3. Вместо того, чтобы устанавливать метки с помощью hist(), вы можете установить их с помощью mtext(). Вы можете установить размер шрифта, используя cex, но значение 1 фактически устанавливает шрифт в 1,5 раза больше по умолчанию !!! Вы должны использовать, cex=2/3чтобы получить размер шрифта по умолчанию. По крайней мере, это относится к R 3.0.2 для Mac OS X с использованием вывода PDF.
  4. Вы можете изменить размер шрифта по умолчанию для вывода PDF, используя pointsizein pdf().

Я полагаю, было бы слишком логично ожидать, что R (а) действительно сделает то, что в документации сказано, что он должен, (б) вести себя ожидаемым образом.

Городской бродяга
источник
2

Я сталкивался с этим, когда хотел уменьшить метки оси, но оставил все остальное таким же размером. Команда, которая работала на меня, должна была поставить:

par(cex.axis=0.5)

Перед сюжетной командой. Просто не забудьте поставить:

par(cex.axis=1.0)

После построения графика убедитесь, что шрифты возвращаются к размеру по умолчанию.

Одиссей Итака
источник
2

Для полноты масштабирования текста на 150% с помощью cex = 1.5вот полное решение:

cex <- 1.5
par(cex.lab=cex, cex.axis=cex, cex.main=cex)
plot(...)
par(cex.lab=1, cex.axis=1, cex.main=1)

Я рекомендую обернуть вещи, как это, чтобы уменьшить шаблон, например:

plot_cex <- function(x, y, cex=1.5, ...) {
  par(cex.lab=cex, cex.axis=cex, cex.main=cex)
  plot(x, y, ...)
  par(cex.lab=1, cex.axis=1, cex.main=1)
  invisible(0)
}

который вы можете использовать следующим образом:

plot_cex(x=1:5, y=rnorm(5), cex=1.3)

Они ...известны как эллипсы в R и используются для передачи дополнительных параметров функциям. Следовательно, они обычно используются для построения. Итак, следующие работы, как и ожидалось:

plot_cex(x=1:5, y=rnorm(5), cex=1.5, ylim=c(-0.5,0.5))
Адам Эриксон
источник
1

Если вы хотите увеличить шрифт меток гистограммы при установке меток = TRUE

bp=hist(values, labels = FALSE, 
 main='Histogram',
 xlab='xlab',ylab='ylab',  cex.main=2, cex.lab=2,cex.axis=2)

text(x=bp$mids, y=bp$counts, labels=bp$counts ,cex=2,pos=3)
yeinhorn
источник