2016-09-16 5 views
-5

が、私はR.申し訳ありませんで積み上げ列チャートをやろうとしていますが、私は、私はデータR GGplot2積み上げの列が

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

そして私が持っているかこれは

助ける必要がある理由のthatsを勉強チャート私はあなたが処理するために、この問題を容易にするために適用されるべきである2かなり基本的な原則があると思います。このグラフィック

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

+4

?また、データフレームを質問に 'dput()'して簡単に再作成できるようにすると便利です。 – gregmacfarlane

+0

積み重なったバーは、人々が解釈するのが本当に難しいです。このタイプの視覚化を他のものよりも使用したい理由はありますか? – hrbrmstr

+2

重複した[重なった棒グラフ(ggplot2)を作成するクイックヘルプ](http://stackoverflow.com/questions/4811316/quick-help-creating-a-stacked-bar-chart-ggplot2) – gregmacfarlane

答えて

1

を作成したいです。まず、データをtidyにする必要があります。第二に、ggplotをあなたの計算をするために残すべきではありません。

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 

私はあなたのstructure()にアップしたのか分からないが、私は私のRセッションをクラッシュすることなく、そこからデータフレームを構築することができませんでした。

私たちは、この形式にデータを取得したら、ggplot2コールは実際に非常に簡単です:

あなたがこれまでに試してみました何
ggplot(a, aes(x = variable, weight = weight * 100, fill = category)) + 
    geom_bar() 

enter image description here

+0

'library(tidyverse)'?それは本当に事ですか? –

+0

あなたはそれを信じるのがよいでしょう! https://github.com/hadley/tidyverse – gregmacfarlane

関連する問題