Як збільшити розмір шрифту в графіку в R?


146

Я збентежений. Який правильний спосіб збільшити розмір шрифту тексту в заголовку, мітках та інших місцях сюжету?

Наприклад

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?


Відповіді:


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
BTW, якщо ви намагаєтесь змінити вісь на гістограмі (скажімо, для графіку змінної важливості у randomForest або GBM), вам потрібно скористатися cex.names(якщо ви людина, яка читає речі з вертикального положення, ви можете також хочу las=2)
генеорама

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)виготовить цей:

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


Робота 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 з використанням pointsizeв pdf().

Я припускаю, що було б занадто логічно сподіватися, що R (a) насправді зробить те, що в його документації сказано, що він повинен робити, (b) поводитись очікуваним чином.


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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.