Pode utilizar a seguinte sintaxe para alterar a ordem dos itens numa legenda ggplot2:
scale_fill_discrete(breaks=c('item4', 'item2', 'item1', 'item3', ...)
O exemplo seguinte mostra como utilizar esta sintaxe na prática.
Exemplo: Alterar a ordem dos itens na legenda do ggplot2
Suponha que criamos o seguinte gráfico em ggplot2 que apresenta vários boxplots num único gráfico:
library (ggplot2) #criar quadro de dados df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'C'), points=c(6, 8, 13, 16, 10, 14, 19, 22, 14, 18, 24, 26)) #criar vários boxplots para visualizar os pontos marcados pela equipa ggplot(data=df, aes (x=team, y=points, fill=team)) + geom_boxplot()
Para alterar a ordem dos itens na legenda, podemos utilizar a função escala_preenchimento_discreto() funcionam da seguinte forma:
library (ggplot2) #create data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'C'), points=c(6, 8, 13, 16, 10, 14, 19, 22, 14, 18, 24, 26)) #create multiple boxplots to visualize points scored by team ggplot(data=df, aes (x=team, y=points, fill=team)) + geom_boxplot() + scale_fill_discrete(breaks=c('B', 'C', 'A'))
Repare que a ordem dos itens mudou de: A, B, C para B, C, A.
Também podemos utilizar o rótulos para alterar as etiquetas específicas utilizadas para os itens na legenda:
library (ggplot2) #create data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C'), points=c(6, 8, 13, 16, 10, 14, 19, 22, 14, 18, 24, 26)) #create multiple boxplots to visualize points scored by team ggplot(data=df, aes (x=team, y=points, fill=team)) + geom_boxplot() + scale_fill_discrete(breaks=c('B', 'C', 'A'), labels=c('B Team', 'C Team', 'A Team'))
Repare que as etiquetas das legendas foram alteradas.