Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何使用多个向量叠加面积图?_R_Ggplot2 - Fatal编程技术网

R 如何使用多个向量叠加面积图?

R 如何使用多个向量叠加面积图?,r,ggplot2,R,Ggplot2,我以广泛的格式从模型中获取数据,一个时间段内每周一行,每个输出一列。下面是制造数据的示例 month <- as.Date(c('2010-10-1','2010-11-1','2010-12-1')) John_Doe <- c(21000, 23400, 26800) Peter_Gynn <- c(14500, 14800, 35300) Jolie_Hope <- c(49200, 28600, 26800) employ.data1 <- data.fra

我以广泛的格式从模型中获取数据,一个时间段内每周一行,每个输出一列。下面是制造数据的示例

month <- as.Date(c('2010-10-1','2010-11-1','2010-12-1'))
John_Doe <- c(21000, 23400, 26800)
Peter_Gynn <- c(14500, 14800, 35300)
Jolie_Hope <- c(49200, 28600, 26800)
employ.data1 <- data.frame(month, John_Doe, Peter_Gynn, Jolie_Hope)
我知道,如果我的数据是以长格式排列的,我可以很容易地做到这一点。请参见下文,但我的数据并非如此。会考虑一个简单的解决方案来修复上面的问题,或者将数据传输到下面的格式。
employee <- c('John Doe','John Doe','John Doe','Peter Gynn','Peter Gynn','Peter Gynn','Jolie Hope','Jolie Hope','Jolie Hope')
month <- as.Date(c('2010-10-1','2010-11-1','2010-12-1','2010-10-1','2010-11-1','2010-12-1','2010-10-1','2010-11-1','2010-12-1'))
expense <- c(21000, 23400, 26800, 14500, 14800, 35300, 49200, 28600, 26800)
employ.data2 <- data.frame(employee, month, expense)

ggplot(employ.data2) + geom_area(aes(x=month, y=expense, fill=employee), position='stack')
在这个示例中,我展示了三列,实际上,模型中可能会出现任何数字,因此计划使用for-In循环使用每个附加向量更新图表

感谢您的回复,另外:


<> P>这是按字母顺序排列的区域,我不知道如何按我想要的顺序排序,彼得在中间。

< P>我认为最简单的方法是使用TyDyr:将数据收集成长格式:


这将适用于任何额外数量的员工。感谢这一点,这非常有效,还有一个问题,你如何让他们按你需要的顺序,而不是按算术顺序?我把它们改名为aaa_John_Doe,bbb_Peter_Gynn,ccc_Julie_Hope。这似乎有点不好。
employee <- c('John Doe','John Doe','John Doe','Peter Gynn','Peter Gynn','Peter Gynn','Jolie Hope','Jolie Hope','Jolie Hope')
month <- as.Date(c('2010-10-1','2010-11-1','2010-12-1','2010-10-1','2010-11-1','2010-12-1','2010-10-1','2010-11-1','2010-12-1'))
expense <- c(21000, 23400, 26800, 14500, 14800, 35300, 49200, 28600, 26800)
employ.data2 <- data.frame(employee, month, expense)

ggplot(employ.data2) + geom_area(aes(x=month, y=expense, fill=employee), position='stack')
library("tidyr")
employ_tidy <- gather(employ.data1, employee, expense, -month)
employ_tidy
##        month   employee expense
## 1 2010-10-01   John_Doe   21000
## 2 2010-11-01   John_Doe   23400
## 3 2010-12-01   John_Doe   26800
## 4 2010-10-01 Peter_Gynn   14500
## 5 2010-11-01 Peter_Gynn   14800
## 6 2010-12-01 Peter_Gynn   35300
## 7 2010-10-01 Jolie_Hope   49200
## 8 2010-11-01 Jolie_Hope   28600
## 9 2010-12-01 Jolie_Hope   26800