Como criar um diagrama de barras em que as barras estejam lado a lado em R

9

Eu quero criar um bardiagram para esses dados em R (lido em um arquivo CVS):

Nome da Métrica MétricaA MétricaB Just_X 2 10 Just_X_and_Y 3 20

para ter o seguinte diagrama:

texto alternativo

Sou iniciante e nem sei como começar.

Skarab
fonte
11
Barplot ler o arquivo de ajuda às vezes é mais rápido que postar em um fórum ...
RockScience
Você deve primeiro descobrir que os gráficos de barras são criados pela função de gráficos de barras ... isso não é tão fácil quando você não sabe disso.
Isso não fornece uma resposta para a pergunta. Para criticar ou solicitar esclarecimentos a um autor, deixe um comentário abaixo da postagem.
b Kjetil Halvorsen

Respostas:

13

Suponho que você possa importar seus dados em R com read.table()as read.csv()funções de mão curta . Em seguida, você pode aplicar todas as funções de resumo que desejar, por exemplo tableou meancomo abaixo:

x <- replicate(4, rnorm(100))
apply(x, 2, mean)

ou

x <- replicate(2, sample(letters[1:2], 100, rep=T))
apply(x, 2, table)

A idéia é terminar com uma matriz ou tabela para os valores de resumo que você deseja exibir.

Para a saída gráfica, observe a barplot()função com a opção beside=TRUE, por exemplo

barplot(matrix(c(5,3,8,9),nr=2), beside=T, 
        col=c("aquamarine3","coral"), 
        names.arg=LETTERS[1:2])
legend("topleft", c("A","B"), pch=15, 
       col=c("aquamarine3","coral"), 
       bty="n")

O spaceargumento pode ser usado para adicionar um espaço extra entre barras justapostas.

texto alternativo

chl
fonte
13

Aqui versão ggplot:

library(ggplot2)
df = melt(data.frame(A=c(2, 10), B=c(3, 20), 
          experiment=c("X", "X & Y")),
          variable_name="metric")

ggplot(df, aes(experiment, value, fill=metric)) + 
       geom_bar(position="dodge")

texto alternativo

teucer
fonte
2
Espero que você não se importe, mas adicionei a saída de seus comandos.
csgillespie
@csgillespie no problem :)
teucer
1

Eu queria atualizar a resposta do professor para refletir a remodelação2.

library(ggplot2)
library(reshape2)
df = melt(data.frame(A=c(2, 10), B=c(3, 20), 
                 experiment=c("X", "X & Y")),
      variable.name="metric")

ggplot(df, aes(experiment, value, fill=metric)) + 
  geom_bar(position="dodge",stat="identity")

Observe que a resposta do professor produz o erro "Erro na avaliação (expr, ambiente, anexo): objeto 'métrica' não encontrado" com reshape2 porque o reshape2 usa o nome da variável em vez do nome da variável.

Também descobri que precisava adicionar stat = "identity" à função geom_bar porque, caso contrário, apresentava "Erro: mapeando uma variável para y e também usando stat =" bin "."

Colin D
fonte