Cara membuat diagram barplot di mana bar berdampingan di R

9

Saya ingin membuat bardiagram untuk data ini dalam R (baca dari file CVS):

Metric Experiment_NameA MetricB Just_X 2 10 Just_X_and_Y 3 20

untuk memiliki diagram berikut:

teks alternatif

Saya pemula dan saya tidak tahu bagaimana memulainya.

Skarab
sumber
1
? Barplot membaca file bantuan terkadang lebih cepat daripada memposting di forum ...
RockScience
Anda harus terlebih dahulu mengetahui bahwa barplot dibuat oleh fungsi barplot ... ini tidak mudah ketika Anda tidak tahu itu.
Ini tidak memberikan jawaban untuk pertanyaan itu. Untuk mengkritik atau meminta klarifikasi dari penulis, tinggalkan komentar di bawah posting mereka.
kjetil b halvorsen

Jawaban:

13

Saya akan berasumsi bahwa Anda dapat mengimpor data Anda dalam R dengan read.table()atau read.csv()fungsi tangan pendek . Kemudian Anda dapat menerapkan fungsi ringkasan apa pun yang Anda inginkan, misalnya tableatau mean, seperti di bawah ini:

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

atau

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

Idenya adalah untuk berakhir dengan matriks atau tabel untuk nilai ringkasan yang ingin Anda tampilkan.

Untuk output grafis, lihat barplot()fungsi dengan opsi beside=TRUE, misalnya

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

The spaceargumen dapat digunakan untuk menambah ruang ekstra antara bar disandingkan.

teks alternatif

chl
sumber
13

Di sini versi 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")

teks alternatif

penggoda
sumber
2
Saya harap Anda tidak keberatan, tetapi saya menambahkan output dari perintah Anda.
csgillespie
@csgillespie tidak masalah :)
Penggoda
1

Saya ingin memperbarui jawaban teucer untuk mencerminkan pembentukan kembali2.

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

Perhatikan bahwa jawaban teucer menghasilkan kesalahan "Kesalahan dalam eval (expr, envir, enclos): objek 'metrik' tidak ditemukan" dengan membentuk ulang2 karena membentuk ulang2 menggunakan variable.name alih-alih variable_name.

Saya juga menemukan bahwa saya perlu menambahkan stat = "identitas" ke fungsi geom_bar karena selain itu ia memberi "Kesalahan: Memetakan variabel ke y dan juga menggunakan stat =" bin "."

Colin D
sumber