Respostas:
Usar:
+ scale_y_continuous(labels = scales::percent)
Ou, para especificar parâmetros de formatação para a porcentagem:
+ scale_y_continuous(labels = scales::percent_format(accuracy = 1))
(o comando labels = percent
está obsoleto desde a versão 2.2.1 do ggplot2)
scales::percent(accuracy = 1)
não funcionar é porque as *_format()
versões criam uma função em vez de ... tudo o que percent()
cria sozinho, correto?
Em princípio, você pode passar qualquer função de reformatação para o labels
parâmetro:
+ scale_y_continuous(labels = function(x) paste0(x*100, "%")) # Multiply by 100 & add %
Ou
+ scale_y_continuous(labels = function(x) paste0(x, "%")) # Add percent sign
Exemplo reproduzível:
library(ggplot2)
df = data.frame(x=seq(0,1,0.1), y=seq(0,1,0.1))
ggplot(df, aes(x,y)) +
geom_point() +
scale_y_continuous(labels = function(x) paste0(x*100, "%"))
ggplot2
e os scales
pacotes podem fazer isso:
y <- c(12, 20)/100
x <- c(1, 2)
library(ggplot2)
library(scales)
myplot <- qplot(as.factor(x), y, geom="bar")
myplot + scale_y_continuous(labels=percent)
Parece que a stat()
opção foi retirada, causando a mensagem de erro. Experimente isto:
library(scales)
myplot <- ggplot(mtcars, aes(factor(cyl))) +
geom_bar(aes(y = (..count..)/sum(..count..))) +
scale_y_continuous(labels=percent)
myplot
Emprestado de @Deena acima, essa modificação de função para rótulos é mais versátil do que você pode imaginar. Por exemplo, eu tinha um ggplot em que o denominador das variáveis contadas era 140. Usei o exemplo dela assim:
scale_y_continuous(labels = function(x) paste0(round(x/140*100,1), "%"), breaks = seq(0, 140, 35))
Isso me permitiu obter minhas porcentagens no denominador 140 e, em seguida, quebrar a escala em incrementos de 25%, em vez dos números estranhos que o padrão. A chave aqui é que as quebras de escala ainda são definidas pela contagem original, não por suas porcentagens. Portanto, as quebras devem ser de zero ao valor do denominador, com o terceiro argumento em "quebras" sendo o denominador dividido por quantas quebras de rótulo você deseja (por exemplo, 140 * 0,25 = 35).
library(scales)
para isso.