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.