2016-09-16 5 views
-5

Ich versuche, ein Gestapelte Säulen-Diagramm in R. Leider zu tun, aber ich lerne, das ist, warum ich brauche HilfeR ggplot2 Stacked Spalten Diagramm

Dies ist, wie ich die Daten

structure(list(Category = structure(c(2L, 3L, 4L, 1L), .Label = c("MLC1000", 
    "MLC1051", "MLC1648", "MLC5726"), class = "factor"), Minutes = c(2751698L, 
    2478850L, 556802L, 2892097L), Items = c(684L, 607L, 135L, 711L 
    ), Visits = c(130293L, 65282L, 25484L, 81216L), Sold = c(2625L, 
    1093L, 681L, 1802L)), .Names = c("Category", "Minutes", "Items", 
    "Visits", "Sold"), class = "data.frame", row.names = c(NA, -4L) 
) 

Und i möchten diese Grafik

http://oi68.tinypic.com/j79fer.jpg

+4

Was Sie bisher versucht haben? Es ist auch hilfreich, wenn Sie Ihren Datenrahmen in die Frage eingeben(), damit wir ihn leicht neu erstellen können. – gregmacfarlane

+0

Gestapelte Balken sind für Leute sehr schwierig zu interpretieren. Gibt es einen Grund, warum Sie diese Art der Visualisierung gegenüber anderen verwenden möchten? – hrbrmstr

+2

Mögliches Duplikat von [Schnelle Hilfe beim Erstellen eines gestapelten Balkendiagramms (ggplot2)] (http://stackoverflow.com/questions/4811316/quick-help-creating-a-stacked-bar-chart-ggplot2) – gregmacfarlane

Antwort

1

ich denke, es gibt zwei ziemlich grundlegende Prinzipien erstellen, die Sie anwenden sollten dieses Problem leichter zu handhaben. Zuerst sollten Sie Ihre Daten tidy machen. Zweitens sollten Sie ggplot nicht verlassen, um Ihre Berechnungen für Sie durchzuführen.

library(tidyverse) 

a <- data_frame(
    category = letters[1:4], 
    minutes = c(2751698, 2478850, 556802, 2892097), 
    visits = c(130293, 65282, 25484, 81216), 
    sold = c(2625, 1093, 681, 1802) 
) %>% 
    gather(variable, value, -category) %>% # make tidy 
    group_by(variable) %>% 
    mutate(weight = value/sum(value)) # calculate weight variable 

## Source: local data frame [12 x 4] 
## Groups: variable [3] 
## category variable value  weight 
##  <chr> <chr> <dbl>  <dbl> 
## 1   a minutes 2751698 0.31703610 
## 2   b minutes 2478850 0.28559999 
## 3   c minutes 556802 0.06415178 
## 4   d minutes 2892097 0.33321213 
## 5   a visits 130293 0.43104127 
## 6   b visits 65282 0.21596890 
## 7   c visits 25484 0.08430734 
## 8   d visits 81216 0.26868249 
## 9   a  sold 2625 0.42331882 
## 10  b  sold 1093 0.17626189 
## 11  c  sold  681 0.10982100 
## 12  d  sold 1802 0.29059829 

Ich weiß nicht, was mit Ihrem structure() war, aber ich konnte nicht einen Datenrahmen von ihm ohne Absturz meine R-Sitzung aufzubauen.

Sobald wir die Daten in diesem Format, das ggplot2 Anruf ist eigentlich einfach zu bekommen:

ggplot(a, aes(x = variable, weight = weight * 100, fill = category)) + 
    geom_bar() 

enter image description here

+0

'Bibliothek (ordentliches)'? Ist das wirklich eine Sache? –

+0

Sie sollten es besser glauben! https://github.com/hadley/tidyverse – gregmacfarlane

Verwandte Themen