2013-05-17 2 views
12

В R У меня есть data.frame, как тот, который находится в верхней части изображения.Создать barplot from data.frame

Есть ли возможность создать барплот, как на нижней части изображения?

enter image description here

+0

Если вы имеете в виду выход ascii, попробуйте пакет 'txtplot'. –

+0

Извините, это был всего лишь пример;) Я хочу иметь такой сюжет, как тот, который я получаю от функции barplot. – ElPatzo

+0

Возможно, вы хотите изменить название вашего вопроса? Вы действительно хотите создать штрих-код из data.frame, а не наоборот. – Beasterfield

ответ

19

Использование базовых графики вы можете сделать это просто:

mydf <- data.frame(X1=c(A=2, B=4, C=1), X2=c(3,2,NA), X3=c(4,1,NA)) 
barplot(t(as.matrix(mydf)), beside=TRUE) 

Использование дополнительных вызовов к axis может дать маркировку больше как в этом вопросе.

+2

Это должен быть принятый ответ - зачем использовать две библиотеки для выполнения такой простой задачи? –

+0

, потому что преобразование в матрицу, а затем таблица может добавить много накладных расходов, если у вас большой df? – wordsforthewise

+0

@wordsforthewise, если df настолько велика, что эта служебная информация даже примечательна (не говоря уже о проблеме), то барплот, вероятно, не лучшая визуализация. –

14

Предполагая, что вы не хотите выход ASCii, вот решение, использующее ggplot2:

# load/generate your data 
mydf <- data.frame(X1 = c(2,4,1), X2 = c(3,2,NA), x3 = c(4,1,NA), row.names=c("A","B","C")) 
mydf$Category <- row.names(mydf) 

# bring your data to long format as needed by ggplot 
library(reshape2) 
mydf.molten <- melt(mydf, value.name="Count", variable.name="Variable", na.rm=TRUE) 

# plot and facet by categories 
library(ggplot2) 
qplot(data=mydf.molten, x = Variable, y = Count, geom="bar", stat = "identity") + facet_wrap("Category") 

enter image description here

Для получения более подробной информации, я бы рекомендовал, чтобы проконсультироваться с ggplot2 manual, особенно глава о geom_bar и facet_wrap.

+0

Работал для меня! Спасибо! – ElPatzo

+0

получил эту ошибку с кодом: '> mydf.molten <- melt (mydf, value.name =" Count ", variable.name =" Variable ", na.rm = TRUE) Использование категории в качестве переменных id > qplot (data = mydf.molten, x = Variable, y = Count, geom = "bar", stat = "identity") + facet_wrap ("Категория") Ошибка: stat_count() не должен использоваться с ae эстетическим. Дополнительно: Предупреждающее сообщение: 'stat' устарел' –

+0

@Mona Jalal; 'ggplot2' изменился с 2013 года, особенно когда он обновился с версии. 1.xxx до 2.xxx. – cuttlefish44

Смежные вопросы