Hoe de lettergrootte in een plot in R vergroten?

Ik ben in de war. Wat is de juiste manier om de lettergrootte van tekst in de titel, labels en andere plaatsen van een plot te vergroten?

Bijvoorbeeld

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

Het argument psverandert de lettergrootte niet (maar er staat in R Help voor ?pardat het voor “de puntgrootte van tekst is (maar niet voor symbolen) “.

Is het ook mogelijk om het wijzigen van de lettergrootte te scheiden van de plotfunctie zoals hist?


Antwoord 1, autoriteit 100%

Je wilt zoiets als het argument cex=1.5om lettertypen 150 procent te schalen. Maar zie help(par)want er zijn ook cex.lab, cex.axis, …


Antwoord 2, autoriteit 82%

Dus, om de bestaande discussie samen te vatten, voeg toe

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

naar uw plot, waarbij 1.5 2, 3, etc. kan zijn en een waarde van 1 de standaardwaarde is, zal de lettergrootte vergroten.

x <- rnorm(100)

cex verandert niets

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 toevoegen

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)


Antwoord 3, autoriteit 13%

Merk op dat “cex” dingen verandert wanneer de plot met tekst wordt gemaakt. Bijvoorbeeld de plot van een agglomeratieve hiërarchische clustering:

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

produceert een plot met tekst van normale grootte:

en plot(agn1, which.plots=2, cex=0.5)zullen deze produceren:


Antwoord 4, autoriteit 13%

Met vallen en opstaan heb ik vastgesteld dat het volgende nodig is om de lettergrootte in te stellen:

  1. cexwerkt niet in hist(). Gebruik cex.axisvoor de nummers op de assen, cex.labvoor de labels.
  2. cexwerkt ook niet in axis(). Gebruik cex.axisvoor de cijfers op de assen.
  3. In plaats van labels in te stellen met hist(), kun je ze ook instellen met mtext(). U kunt de lettergrootte instellen met cex, maar als u een waarde van 1 gebruikt in feite stelt u het lettertype in op 1,5 keer de standaardwaarde!!!U moet cex=2/3om de standaard lettergrootte te krijgen. Dit is in ieder geval het geval onder R 3.0.2 voor Mac OS X, met gebruik van PDF-uitvoer.
  4. Je kunt de standaard lettergrootte voor PDF-uitvoer wijzigen met pointsizein pdf().

Ik veronderstel dat het veel te logisch zou zijn om te verwachten dat R (a) daadwerkelijk doet wat de documentatie zegt dat het zou moeten doen, (b) zich op een verwachte manier gedraagt.


Antwoord 5, autoriteit 4%

Ik kwam dit tegen toen ik de aslabels kleiner wilde maken, maar al het andere dezelfde grootte wilde laten. Het commando dat voor mij werkte, was:

par(cex.axis=0.5)

Vóór het plotcommando. Vergeet niet om:

par(cex.axis=1.0)

Na de plot om ervoor te zorgen dat de lettertypen teruggaan naar de standaardgrootte.


Antwoord 6, autoriteit 2%

Als u het lettertype van de labels van het histogram wilt vergroten bij het instellen van 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)

Antwoord 7

Voor de volledigheid, tekst met 150% schalen met cex = 1.5, hier is een volledige oplossing:

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

Ik raad aan om dit soort dingen in te pakken om boilerplate te verminderen, bijvoorbeeld:

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

die je dan als volgt kunt gebruiken:

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

De ...staan bekend als ellipsen in R en worden gebruikt om extra parameters door te geven aan functies. Daarom worden ze vaak gebruikt voor het plotten. Het volgende werkt dus zoals verwacht:

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

Antwoord 8

Als alternatief kunt u de resolutie van de opgeslagen afbeelding wijzigen met de res-parameter van het grafische apparaat:

png(file = "myplot1.png",  bg = "transparent", res = 100)   
plot(1:10)                                                  
dev.off()                                                   

png(file = "myplot2.png", bg = "transparent", res = 200)    
plot(1:10)                                                  
dev.off()                                                   

Dit behoudt dezelfde afbeeldingsgrootte in pixels, maar verandert de beeldverhouding van de plot, inclusief lettergrootte.

Other episodes