楼主: T-steve5
8071 12

[实际应用] 求助-R语言-如何把不同的列画成类似Excel的堆积折线图 [推广有奖]

  • 0关注
  • 0粉丝

高中生

17%

还不是VIP/贵宾

-

威望
0
论坛币
62 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2192 点
帖子
8
精华
0
在线时间
32 小时
注册时间
2016-1-27
最后登录
2016-12-31

楼主
T-steve5 发表于 2016-10-17 11:47:59 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

数da据如下:

周次         项目1     项目2        项目3       项目4
第1周       48         82            4            1
第2周       25        131            1           11
第3周       34        134            0          112
第4周       55        180            0           53

希望用ggplt()做成:x轴是周次,y轴堆积项目的堆积折线图。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:EXCEL xcel exce R语言 cel Excel 如何

回帖推荐

qiu435 发表于3楼  查看完整内容

不好意思看错,是堆积折线图,我理解的堆积折线图就是每周所有项目的总和,如果理解有误,可以改下代码。数据与上。library(ggplot2) data

沙发
qiu435 发表于 2016-10-19 13:07:57
使用ggplot2很容易做,将数据整理为csv文件:

weekprojectnumber
firstp1

48

secondp1

25

thirdp1

34

fourthp1

55

firstp2

82

secondp2

131

thirdp2

134

fourthp2

180

firstp3

4

secondp3

1

thirdp3

0

fourthp3

0

firstP4

1

secondP4

11

thirdP4

112

fourthP4

53

library(ggplot2)                                                      
data<- read.csv("data.csv",head=T)
p<- ggplot(data,aes(x=week,y=number,fill=project))
p+geom_bar(stat="identity",position = "stack")    #position可设置为stack,dodge,fill等,分别为堆叠、并列和填充。 da.png


不知道是不是楼主要的样子

藤椅
qiu435 发表于 2016-10-19 13:23:09
不好意思看错,是堆积折线图,我理解的堆积折线图就是每周所有项目的总和,如果理解有误,可以改下代码。数据与上。library(ggplot2)
data<- read.csv("data.csv",head=T)
first<-sum(subset(data,week=="first",select="number"))
second<-sum(subset(data,week=="second",select="number"))
third<-sum(subset(data,week=="third",select="number"))
fourth<- sum(subset(data,week=="fourth",select="number"))
total<- data.frame(week=unique(data$week),project="sum",number=c(first,second,third,fourth))
data2<- rbind(data,total)
ggplot(data2,aes(x=week,y=number))+geom_line(aes(group=project,colour=project))+geom_point(aes(colour=project))
Rplot.png
不知道是不是你想要的?

22.png (7.4 KB)

22.png

已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
jiqimao742 + 1 + 1 + 1 精彩帖子
admin_kefu + 30 + 2 + 2 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 3  热心指数 + 3  信用等级 + 1   查看全部评分

板凳
jameschin007 发表于 2016-10-19 15:58:24
ggplot()+geom_area(aes(x=date,y=value,fill=variable),data=economics_long)

报纸
jameschin007 发表于 2016-10-19 16:01:10
qiu435 发表于 2016-10-19 13:23
不好意思看错,是堆积折线图,我理解的堆积折线图就是每周所有项目的总和,如果理解有误,可以改下代 ...
这位兄弟,正好问你个问题。
我如果数据是来自几个不同列。比如 P1,P2,P3,P4列,而不是用一个project列去区分。用ggplot如果做stacked bar chart?

地板
qiu435 发表于 2016-10-19 16:28:46
jameschin007 发表于 2016-10-19 16:01
这位兄弟,正好问你个问题。
我如果数据是来自几个不同列。比如 P1,P2,P3,P4列,而不是用一个project列 ...
这个应该是不行的,ggplot2只能用数据框,每一列为一个变量,离散性变量转换为因子,实际上project是一个因子(SPSS里叫做分组变量),P1:P4是该因子的水平,用于指定geom_line()里的group参数。
如果按照你的想法或楼主给的数据格式,无法指定group

7
qiu435 发表于 2016-10-19 16:50:43
qiu435 发表于 2016-10-19 13:23
不好意思看错,是堆积折线图,我理解的堆积折线图就是每周所有项目的总和,如果理解有误,可以改下代 ...
忘了加一行+xlim("first" , "second","third","fourth"),改下标度,x轴标签顺序就对了,ggplot2默认是按字母排序的

8
jameschin007 发表于 2016-10-20 10:53:01
qiu435 发表于 2016-10-19 16:28
这个应该是不行的,ggplot2只能用数据框,每一列为一个变量,离散性变量转换为因子,实际上project是一个 ...
我手里有个表 类似空气质量的表。 NOx,SO2,CO,PM25,PM100....每个都是一列。
我觉得做成stack area 可能效果比较好。 在数据库工具里做比较容易,ggplot 没有什么变通的办法?除了reshape。因为还要做一些统计计算,我已我还得用R。

9
qiu435 发表于 2016-10-20 11:22:57
jameschin007 发表于 2016-10-20 10:53
我手里有个表 类似空气质量的表。 NOx,SO2,CO,PM25,PM100....每个都是一列。
我觉得做成stack area  ...
你这个可以做ggplot2可以做的的,NOx,SO2,CO,PM25,PM100.都是连续变量,但是不支持双Y轴,就是所有指标不能坐在一个图里,标度不一样,需要使用分面facet,每个指标做一个图,如果要做在一个图,变通的方法是把所有指标标准化为无纲量数据,这样标度就一致了。
ggplot2做面积图是geom_area(), 但是个人绝对area做堆叠不好,前面的图形会挡住后面的图形,建议还是做lines+piont 比较好,或者用geom_smooth()做lm 曲线。

10
jameschin007 发表于 2016-10-20 12:30:54
qiu435 发表于 2016-10-20 11:22
你这个可以做ggplot2可以做的的,NOx,SO2,CO,PM25,PM100.都是连续变量,但是不支持双Y轴,就是所有指 ...
多谢,很有帮助。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 00:00