Cum se mărește dimensiunea fontului într-un grafic în R? (Programare, R, Plot)

Tim a intrebat.

Sunt confuz. Care este modalitatea corectă de a mări dimensiunea fontului textului din titlu, etichete și din alte locuri ale unui grafic?

De exemplu

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

ps nu modifică dimensiunea fontului (dar în R Help se spune în R Help pentru ?par că este pentru „mărimea punctului textului (dar nu și a simbolurilor)”.

De asemenea, este posibilă separarea modificării dimensiunii fontului de funcția de trasare a graficului, cum ar fi hist?

Comentarii

  • Posibil duplicat al Întrebare: Cum se schimbă dimensiunea etichetei unui grafic R –  > Por Waldir Leoncio.
7 răspunsuri
Dirk Eddelbuettel

Doriți ceva de genul cex=1.5 argument pentru a scala fonturile la 150%. Dar vedeți help(par) deoarece există și cex.lab, , cex.axis, , …

Comentarii

  • Mulțumesc! Care este diferența cu „ps=1.5”? –  > Por Tim.
  • de ce cex=1.5 nu funcționează? Dar trebuie să specificați pentru fiecare parte în ceea ce privește cex.lab, cex.axis, cex.main? La ce folosește cex=1.5? –  > Por Tim.
  • Ați citit help(par) despre ps? Nu pare să aibă legătură cu textul, din câte îmi dau seama. –  > Por Dirk Eddelbuettel.
  • Acesta este modul în care este, în parte, cu siguranță, pentru compatibilitatea cu implementările anterioare ale limbajului S. –  > Por Dirk Eddelbuettel.
  • cex este factorul de mărire. Valoarea implicită este 1. Dacă trebuie să specificați dimensiunile fonturilor, ar fi bine să fiți pregătit să săpați în documentația începând cu ?Devices, ?pdfFonts, ?pdf, ?embedFonts și multe altele. –  > Por IRTFM.
Jeromy Anglim

Astfel, pentru a rezuma discuția existentă, adăugarea de

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

la complotul dvs., unde 1,5 ar putea fi 2, 3 etc., iar valoarea 1 este valoarea implicită, va crește dimensiunea fontului.

x <- rnorm(100)

cex nu schimbă lucrurile

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)

Adăugați 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)

Comentarii

  • BTW, dacă încercați să modificați axa într-un grafic cu bare (de exemplu, pentru graficul de importanță a variabilelor în randomForest sau GBM), trebuie să utilizați cex.names (dacă sunteți un om care citește lucrurile dintr-o poziție verticală, ați putea dori, de asemenea, să folosiți las=2) –  > Por geneorama.
OskrSaSi

Observați că „cex” schimbă lucrurile atunci când complotul este realizat cu text. De exemplu, reprezentarea grafică a unei grupări ierarhice aglomerative:

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

va produce un grafic cu text de dimensiuni normale:

și plot(agn1, which.plots=2, cex=0.5) îl va produce pe acesta:

Comentarii

  • Lucru în faces2 de asemenea (din Chernoff faces ) –  > Por Galled.
  • În exemplul meu a trebuit să aplic cex nu la parcelă, ci direct la obiectul interior pentru un efect: 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"))) –  > Por Tapper.
Vagabond urban

Prin încercări și erori, am stabilit că sunt necesare următoarele pentru a seta dimensiunea fontului:

  1. cex nu funcționează în hist(). Utilizați cex.axis pentru numerele de pe axe, cex.lab pentru etichete.
  2. cex nu funcționează în axis() nu funcționează nici în . Utilizați cex.axis pentru numerele de pe axe.
  3. În loc să setați etichetele folosind hist(), , le puteți seta folosind mtext(). Puteți seta dimensiunea fontului utilizând cex, , dar folosind o valoare de 1 setează de fapt fontul la o valoare de 1,5 ori mai mare decât cea implicită!!!! Trebuie să utilizați cex=2/3 pentru a obține dimensiunea implicită a fontului. Cel puțin, acesta este cazul în R 3.0.2 pentru Mac OS X, utilizând ieșirea în format PDF.
  4. Puteți modifica dimensiunea implicită a fontului pentru ieșirea în format PDF utilizând pointsize în pdf().

Presupun că ar fi mult prea logic să ne așteptăm ca R să (a) facă de fapt ceea ce documentația sa spune că ar trebui să facă, (b) să se comporte într-un mod așteptat.

Odysseus Ithaca

Am dat peste acest lucru când am vrut să fac etichetele axelor mai mici, dar să las toate celelalte să aibă aceeași dimensiune. Comanda care a funcționat pentru mine, a fost să pun:

par(cex.axis=0.5)

Înainte de comanda plot. Amintiți-vă doar să puneți:

par(cex.axis=1.0)

După plot pentru a vă asigura că fonturile revin la dimensiunea implicită.

yeinhorn

În cazul în care doriți să măriți fontul etichetelor din histogramă atunci când setați labels=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)

Adam Erickson

Pentru complezență, scalarea textului cu 150% cu cex = 1.5, , aici este o soluție completă:

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

Vă recomand să înfășurați astfel de lucruri pentru a reduce boilerplate, de ex:

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)
}

pe care apoi îl puteți folosi astfel:

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

The ... sunt cunoscute sub numele de elipse în R și sunt utilizate pentru a transmite parametri suplimentari către funcții. Prin urmare, ele sunt utilizate în mod obișnuit pentru trasare. Așadar, următoarele funcționează așa cum era de așteptat:

plot_cex(x=1:5, y=rnorm(5), cex=1.5, ylim=c(-0.5,0.5))

Tags:,