Як створити діаграму barplot, де бруски розташовані поруч у R


9

Я хочу створити бардіаграму для цих даних у R (читати з файлу CVS):

Експеримент_Name MetricA MetricB Just_X 2 10 Just_X_and_Y 3 20

мати таку схему:

alt текст

Я початківець і навіть не знаю, як почати.


1
"barplot читання довідкового файлу іноді швидше, ніж публікація на форумі ...
RockScience

Спочатку ви повинні зрозуміти, що барплоти виготовляються функцією барплот ... це не так просто, коли ви цього не знаєте.

Це не дає відповіді на запитання. Щоб критикувати або вимагати роз'яснення у автора, залиште коментар під їх дописом.
kjetil b halvorsen

Відповіді:


13

Я вважаю, що ви можете імпортувати свої дані в R за допомогою read.table()або коротких read.csv()функцій. Потім ви можете застосувати будь-які підсумкові функції, наприклад, tableабо mean, як нижче:

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

або

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

Ідея полягає у формуванні матриці або таблиці для підсумкових значень, які ви хочете відобразити.

Для графічного виводу подивіться barplot()функцію з опцією beside=TRUE, наприклад

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

spaceАргумент може бути використаний , щоб додати додатковий простір між зіставляється гратами.

alt текст


13

Ось версія 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")

alt текст


2
Сподіваюся, ви не заперечуєте, але я додав результат ваших команд.
csgillespie

@csgillespie немає проблем :)
teucer

1

Я хотів оновити відповідь teucer, щоб відобразити перегляд2.

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 створює помилку "Помилка eval (expr, envir, enclos): об'єкт 'metric' не знайдено" з reshape2, оскільки reshape2 використовує змінний.name замість змінної_імен.

Я також виявив, що мені потрібно додати stat = "ідентичність" до функції geom_bar, оскільки в іншому випадку це дало "Помилка: Зміна змінної до y, а також використання stat =" bin "."

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.