楼主: 治感冒
8129 6

[问答] ggplot2怎么对数据框不同列循环作图? [推广有奖]

  • 1关注
  • 1粉丝

博士生

82%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.0036
学术水平
2 点
热心指数
2 点
信用等级
1 点
经验
341 点
帖子
178
精华
0
在线时间
452 小时
注册时间
2007-3-9
最后登录
2020-1-8

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
想根据ggplot画折线图。

已知有以下的数据框,大致长的如下所示。

  1.    datetime bank 房地产 医药生物 休闲服务 机械设备  综合 建筑装饰 建筑材料 家用电器  汽车 食品饮料
  2. 1 2014-01-02 5.01  11.27    37.28    40.62    24.84 29.20    10.69    20.14    14.97 15.17    17.38
  3. 2 2014-01-03 4.93  11.10    37.11    40.60    24.73 28.75    10.49    19.69    14.62 14.97    17.22
  4. 3 2014-01-06 4.88  10.67    36.31    39.39    23.99 27.94    10.15    19.07    14.24 14.56    16.80
  5. 4 2014-01-07 4.86  10.64    36.69    39.83    24.22 28.07    10.13    19.06    14.27 14.55    16.88
  6. 5 2014-01-08 4.88  10.55    37.03    39.77    24.30 27.97    10.06    19.03    14.36 14.55    16.99
  7. 6 2014-01-09 4.93  10.53    36.69    39.47    24.02 27.47     9.95    18.40    14.23 14.30    16.81
  8.    
复制代码



我想根据每一个行业画一个折线图,建了一个indice,包括上述数据的数据列名,然后准备写个循环如下:

  1. for (i in indice[-1]) {
  2.   print(i)
  3.   ggplot(data = index_pe, aes(x = datetime, y = i)) +geom_line() +geom_point()
  4. }
复制代码
但是这样并不可行。我个人目前理解,因为ggplot里aes的y = 这个取值是直接用的列名,不带引号。比如,
  1. ggplot(data = index_pe, aes(x = datetime, y = 医药生物)) +geom_line() +geom_point()
复制代码
是可以的。但是在上述循环里,i 其实是”生物医药“,有引号?

如何解决这个问题呢?




二维码

扫码加我 拉你入群

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

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

关键词:ggplot2 gplot plot GPL 数据框 机械设备 建筑材料 建筑装饰 食品饮料 医药生物

沙发
stzhao 在职认证  发表于 2016-3-15 21:35:10 |只看作者 |坛友微信交流群
你把数据框reshape一下,变成long格式,然后再用ggplot2作图

使用道具

藤椅
ck9532 发表于 2016-3-16 00:56:07 来自手机 |只看作者 |坛友微信交流群
SelNames <- names(df)

lapply(SelNames, function(cn) {
    ggplot(df, aes_string(x=cn.....)...)
})

使用道具

板凳
治感冒 发表于 2016-3-16 17:55:03 |只看作者 |坛友微信交流群
stzhao 发表于 2016-3-15 21:35
你把数据框reshape一下,变成long格式,然后再用ggplot2作图
谢谢。后来发现将aes参数替换为aes_string就好了

使用道具

报纸
治感冒 发表于 2016-3-16 17:57:25 |只看作者 |坛友微信交流群
ck9532 发表于 2016-3-16 00:56
SelNames
对,就是使用aes_string,

使用道具

地板
weifeng9011 发表于 2018-8-19 23:47:21 |只看作者 |坛友微信交流群
刚好碰到同样的问题,学习了

使用道具

7
shengzhouwang 发表于 2018-8-24 16:17:12 |只看作者 |坛友微信交流群
治感冒 发表于 2016-3-16 17:57
对,就是使用aes_string,
能把你的代码放网上吗

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 16:31