O que fazer quando eu tenho valores perdidos 'NA' na matriz de dados? Problemas no gráfico de barras empilhadas.
Gráficos no R por Luis Macedo-Soares.
A Denise Tonetta deixou um comentário interessante no post do script do gráfico de barras empilhadas lá no Facebook. O que acontece se tivermos na matriz um valor NA? Para quem não sabe NA é a sigla para “not available” usada no R para identificar valores perdidos na sua planilha de dados. A questão é: se você tem um valor NA, a função barplot() não faz a soma daquele grupo de dados e a barra não aparece no gráfico, como você pode ver na primeira figura para o nível 1 da categoria M.
Como a minha matriz estava completa, eu utilizei o seguinte código para criar o valor NA e gerar o primeiro gráfico de barras empilhadas da figura abaixo:
dados2 <- dados # salvei os dados em outro objeto
dados2[1,1] <- NA # substitui o valor da primeira célula [linha, coluna] por NA
barplot(height=dados2, names.arg=colnames(dados2),
Como a minha matriz estava completa, eu utilizei o seguinte código para criar o valor NA e gerar o primeiro gráfico de barras empilhadas da figura abaixo:
dados2 <- dados # salvei os dados em outro objeto
dados2[1,1] <- NA # substitui o valor da primeira célula [linha, coluna] por NA
barplot(height=dados2, names.arg=colnames(dados2),
col=c("yellow","darkorange","red"),
cex.names=1.4,beside=FALSE, las=1, space=0.8,
cex.names=1.4,beside=FALSE, las=1, space=0.8,
ylim=c(0,300), cex.axis=1.2, cex.lab=1.2, font.lab=2,
args.legend=c(x="topleft",bty="n"),
legend.text=c("Fator A","Fator B","Fator C"),
ylab="Quantidade da variável y")
box()
box()
Para a barra aparecer no gráfico com os outros valores, você precisa substituir o valor NA por zero, como fiz no código abaixo, gerando a segunda figura. Procurei o argumento na.rm=TRUE que é usado para tratar valores perdidos em funções como mean() e sd() que retornam a média e o desvio padrão, respectivamente, mas ele não é um parâmetro gráfico, então o R retornou um erro.
dados3 <- dados2 # novamente criei outro objeto
dados3[1,1] <- 0 # substitui o valor da primeira célula [linha, coluna] por zero
barplot(height=dados3, names.arg=colnames(dados3),
dados3 <- dados2 # novamente criei outro objeto
dados3[1,1] <- 0 # substitui o valor da primeira célula [linha, coluna] por zero
barplot(height=dados3, names.arg=colnames(dados3),
col=c("yellow","darkorange","red"), cex.names=1.4, beside=FALSE,
las=1, space=0.8, ylim=c(0,300), cex.axis=1.2, cex.lab=1.2,
font.lab=2, args.legend=c(x="topleft",bty="n"),
legend.text=c("Fator A","Fator B","Fator C"),
ylab="Quantidade da variável y")
box()
Obrigado Denise Tonetta!
ylab="Quantidade da variável y")
box()
Obrigado Denise Tonetta!
Deixem seus comentários se tiverem sacadas como esta que vamos progredindo juntos. #acompanhadoeuvoumaislonge