Como aumentar o tamanho da fonte em um gráfico no R?

147

Estou confuso. Qual é a maneira correta de aumentar o tamanho da fonte do texto no título, nos rótulos e em outros locais de um gráfico?

Por exemplo

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

O psargumento não altera o tamanho da fonte (mas diz na Ajuda do R ?parque é para "o tamanho do texto do ponto (mas não os símbolos)".

Também é possível separar a alteração do tamanho da fonte da função de plotagem, como hist?

Tim
fonte
Possível duplicata Como alterar o tamanho do rótulo de uma trama R
Waldir Leoncio

Respostas:

140

Você quer algo como o cex=1.5argumento para dimensionar fontes em 150%. Mas vejo help(par)como também há cex.lab, cex.axis...

Dirk Eddelbuettel
fonte
1
Obrigado! Qual é a diferença com "ps = 1.5"?
Tim
5
por que cex = 1.5 não funciona? Mas tem que especificar para cada parte em termos de cex.lab, cex.axis, cex.main? O que é cex = 1,5?
Tim
2
Você leu help(par)sobre ps? Não parece relacionado ao texto, tanto quanto eu posso dizer.
Dirk Eddelbuettel
2
É assim que é, em parte certamente para compatibilidade com versões anteriores de implementações anteriores da linguagem S.
Dirk Eddelbuettel
3
cex é o fator de ampliação. O valor padrão é 1. Se você precisar especificar o tamanho da fonte, é melhor estar preparado para pesquisar na documentação, começando com "Devices", "pdfFonts", "pdf", "embedFonts" e muitos outros.
IRTFM
124

Assim, para resumir a discussão existente, adicionando

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

para sua plotagem, onde 1,5 pode ser 2, 3 etc. e um valor 1 é o padrão aumentará o tamanho da fonte.

x <- rnorm(100)

cex não muda as coisas

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)

insira a descrição da imagem aqui

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

insira a descrição da imagem aqui

Jeromy Anglim
fonte
2
BTW, se você estiver tentando modificar o eixo em um gráfico de barras (digamos, para o gráfico de importância variável em randomForest ou GBM), será necessário usá-lo cex.names(se você é um humano que lê as coisas na posição vertical, também pode quero las=2)
geneorama 12/01
22

Observe que " cex " muda as coisas quando o gráfico é feito com texto. Por exemplo, o gráfico de um cluster hierárquico aglomerativo:

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

produzirá um gráfico com texto de tamanho normal:

insira a descrição da imagem aqui

e plot(agn1, which.plots=2, cex=0.5)produzirá este:

insira a descrição da imagem aqui

OskrSaSi
fonte
Trabalhar faces2também (dos rostos de Chernoff )
Galled
No meu exemplo eu tinha que aplicar CEX não a trama, mas o objeto interno diretamente para um efeito: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

Por tentativa e erro, determinamos o seguinte para definir o tamanho da fonte:

  1. cexnão funciona hist(). Use cex.axispara os números nos eixos, cex.labpara as etiquetas.
  2. cextambém não funciona axis(). Use cex.axispara os números nos eixos.
  3. No lugar de definir etiquetas usando hist(), você pode defini-las usando mtext(). Você pode definir o tamanho da fonte usando cex, mas usar um valor 1 realmente define a fonte para 1,5 vezes o padrão !!! Você precisa usar cex=2/3para obter o tamanho da fonte padrão. No mínimo, esse é o caso do R 3.0.2 para Mac OS X, usando saída em PDF.
  4. Você pode alterar o tamanho da fonte padrão da saída pointsizeem PDF usando in pdf().

Suponho que seria muito lógico esperar que R (a) realmente faça o que a documentação diz que deve fazer, (b) se comporte da maneira esperada.

Vagabundo Urbano
fonte
2

Me deparei com isso quando queria diminuir o tamanho dos rótulos dos eixos, mas deixava todo o resto do mesmo tamanho. O comando que funcionou para mim, foi colocar:

par(cex.axis=0.5)

Antes do comando plot. Lembre-se de colocar:

par(cex.axis=1.0)

Após a plotagem, verifique se as fontes retornam ao tamanho padrão.

Odysseus Ithaca
fonte
2

Para completar, dimensionando o texto em 150% com cex = 1.5, aqui está uma solução completa:

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

Eu recomendo agrupar coisas como esta para reduzir o clichê, por exemplo:

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

que você pode usar assim:

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

Eles ...são conhecidos como elipses em R e são usados ​​para passar parâmetros adicionais para as funções. Portanto, eles são comumente usados ​​para plotagem. Portanto, o seguinte funciona conforme o esperado:

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

Caso você queira aumentar a fonte dos rótulos do histograma ao definir rótulos = 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
fonte