R'de çubukların yan yana olduğu bir çubuk grafik diyagramı nasıl oluşturulur


9

R (CVS dosyasından okuyun) bu veriler için bir bardiagram oluşturmak istiyorum:

Deneme_Adı MetrikA MetrikB Just_X 2 10 Just_X_and_Y 3 20

Aşağıdaki şemaya sahip olmak için:

alternatif metin

Ben acemiyim ve nasıl başlayacağımı bile bilmiyorum.


1
? barplot yardım dosyasını okumak bazen bir forumda yayınlamaktan daha hızlıdır ...
RockScience

İlk önce barplotların barplot fonksiyonu ile yapıldığını anlamanız gerekir ... bunu bilmediğinizde bu o kadar kolay değildir.

Bu soruya bir cevap vermez. Bir yazardan eleştiri veya açıklama istemek için gönderilerinin altına bir yorum bırakın.
kjetil b halvorsen

Yanıtlar:


13

Verilerinizi R ile read.table()veya kısa el read.csv()işlevleriyle içe aktarabileceğinizi varsayacağım . Ardından, istediğiniz herhangi bir özet işlevi, örneğin tableveya meanaşağıdaki gibi uygulayabilirsiniz:

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

veya

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

Fikir, görüntülemek istediğiniz özet değerler için bir matris veya tablo ile sonuçlanmaktır.

Grafik çıktısı için, barplot()işleve şu seçeneğe bakın beside=TRUE, örn.

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")

Bağımsız spacedeğişken, yan yana yerleştirilmiş çubuklar arasına fazladan boşluk eklemek için kullanılabilir.

alternatif metin


13

İşte ggplot sürümü:

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")

alternatif metin


2
Umarım aldırmazsınız, ama komutlarınızın çıktısını ekledim.
csgillespie

@csgillespie sorun değil :)
teucer

1

Teucer'ın cevabını reshape2'yi yansıtacak şekilde güncellemek istedim.

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")

Teucer'ın cevabının reshape2 ile "eval (expr, envir, enc): 'metric' bulunamadı" hatasını verdiğini unutmayın, reshape2 değişken_adı yerine değişken.adı kullandığını unutmayın.

Ayrıca geom_bar işlevine stat = "kimlik" eklemek gerekiyordu çünkü aksi takdirde "Hata: y değişkenine eşleme ve ayrıca stat =" bin "kullanarak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.