Як збільшити розмір шрифту в графіку в 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.