Как создать диаграмму гистограммы, где столбцы расположены рядом в R


9

Я хочу создать bardiagram для этих данных в R (читать из файла CVS):

Эксперимент_Имя метрикиА МетрикаБ Just_X 2 10 Just_X_and_Y 3 20

иметь следующую диаграмму:

альтернативный текст

Я новичок и даже не знаю с чего начать.


1
? barplot, читающий файл справки, иногда быстрее чем сообщение на форуме ...
RockScience

Сначала вы должны выяснить, что барплоты создаются с помощью функции barplot ... это не так просто, когда вы этого не знаете.

Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий под своим постом.
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Аргумент может быть использован , чтобы добавить дополнительное пространство между сопоставляемой решеткой.

альтернативный текст


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

альтернативный текст


2
Надеюсь, вы не возражаете, но я добавил вывод ваших команд.
csgillespie

@csgillespie нет проблем :)
teucer 22.10.10

1

Я хотел обновить ответ teucer, чтобы отразить reshape2.

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): объект« метрика »не найден» с reshape2, потому что reshape2 использует variable.name вместо variable_name.

Я также обнаружил, что мне нужно добавить stat = "identity" в функцию geom_bar, потому что в противном случае она выдает "Ошибка: отображение переменной на y, а также использование stat =" bin "."

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.