2013-05-17 18 views
12

W R Mam data.frame podobne do tego na górze obrazu.Utwórz barplot z data.frame

Czy jest możliwość utworzenia siatki podobnej do tej na dole obrazu?

enter image description here

+0

Jeśli masz na myśli wyjście ascii wypróbuj pakiet 'txtplot'. –

+0

Przepraszam, to był tylko przykład;) chcę mieć fabułę podobną do tej, którą otrzymuję z funkcją barplota. – ElPatzo

+0

Prawdopodobnie chcesz zmienić tytuł twojego pytania? W rzeczywistości chcesz utworzyć pręt z danych.frame, a nie odwrotnie. – Beasterfield

Odpowiedz

19

wykorzystaniem grafiki bazowe można to zrobić po prostu:

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) 

pomocą dodatkowych połączeń do axis może dać etykietowania bardziej jak w pytaniu.

+2

to powinna być zaakceptowana odpowiedź - po co używać dwóch bibliotek do wykonania tak prostego zadania? –

+0

, ponieważ konwersja do macierzy, a następnie tabeli może dodać wiele kosztów, jeśli masz duży plik df? – wordsforthewise

+0

@wstecz, jeśli df jest tak duży, że ten narzut jest nawet zauważalny (nie mówiąc już o problemie), to prawdopodobnie nie jest to najlepsza wizualizacja. –

14

Zakładając, że nie chcesz wyjście ASCII, tutaj jest rozwiązanie wykorzystujące 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

celu uzyskania dalszych informacji, polecam zasięgnąć opinii ggplot2 manual, zwłaszcza rozdział o numerach geom_bar i facet_wrap.

+0

Pracowałem dla mnie! Dziękuję Ci! – ElPatzo

+0

Wystąpił ten błąd z kodem: '> mydf.molten <- stop (mydf, value.name =" Count ", variable.name =" Variable ", na.rm = TRUE) Używanie kategorii jako zmiennych identyfikacyjnych > qplot (data = mydf.molten, x = zmienna, y = liczba, geom = "bar", stat = "tożsamość") + facet_wrap ("Kategoria") Błąd: stat_count() nie może być używany z estetyką. Ponadto: Komunikat ostrzegawczy: 'stat' jest przestarzałe' –

+0

@Mona Jalal; 'ggplot2' zmienił się od 2013 roku, szczególnie po aktualizacji z wersji ver. 1.xxx do 2.xxx. – cuttlefish44