楼主: kk22boy
2609 4

[程序分享] ggplot2绘图入门系列之三:位置调整与条形图 [推广有奖]

  • 8关注
  • 95粉丝

一叶知秋

学科带头人

51%

还不是VIP/贵宾

-

TA的文库  其他...

计量经济与统计

SSCI、权威 论文写作及投稿经验

威望
1
论坛币
56494 个
通用积分
128.8729
学术水平
437 点
热心指数
492 点
信用等级
393 点
经验
67525 点
帖子
1590
精华
0
在线时间
2188 小时
注册时间
2005-3-10
最后登录
2024-4-2

初级热心勋章 初级信用勋章

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
位置调整(Position adjustments)是针对同一图层内元素的位置进行微调的方法。它包括五种设置,分别是stack、dodge、fill、identity、jitter。

我们用条形图来展示其用法,仍使用mpg数据集,其中用到的变量是class,即生产汽车的类型,以及year生产年份。下面的条形图是将各类型的汽车数量进行汇集,并以年份作为分组变量。我们首先载入扩展包,然后用频数表对数据进行大致的了解,最后绘制了四种条形图。
library(ggplot2)with(mpg,table(class,year))p <- ggplot(data=mpg,aes(x=class,fill=factor(year)))p + geom_bar(position='dodge')p + geom_bar(position='stack')p + geom_bar(position='fill')p + geom_bar(position='identity',alpha=0.3)










可以看到dodge方式是将不同年份的数据并列放置;stack方式是将不同年份数据堆叠放置,这也是geom_bar的默认处理方式;fill方式和stack类似,但Y轴不再是计数,而是以百分比显示;identity方式是不做任何改变直接显示出来,所以需要设置透明度才能看得清楚。

geom_bar是绘制条状几何对象,所以也可以用不经汇集的原始数据进行绘图。下面我们用2001到2010年间的美国GDP增长率举个例子。

y=c(1.1,1.8,2.5,3.6,3.1,2.7,1.9,-0.1,-3.5,3.0)x=2001:2010data=data.frame(x,y)p=ggplot(data,aes(x,y,fill=y))p+geom_bar(stat="identity")+     geom_abline(intercept = 0, slope = 0,size=1,colour='gray')+    geom_text(aes(label=y),hjust=0.5, vjust=-0.5 )+    scale_y_continuous(limits=c(-3.8,4.2))+    labs(x='年份', y='GDP增长率%')+    opts(title = "美国GDP增长率")




通过电子邮件发送BlogThis!共享给 Twitter共享给 Facebook



标签: ggplot2, 绘图



3 条评论:

  • gardenia.kitty6/19/2012 4:05 上午

    你好,最近在学习r,发现了你的blog,十分喜欢。今天参考你的这篇博文学习ggplot,想请教下这个with 和 table到底是怎么使用的
    还有提取出来的这个表格
    year
    class 1999 2008
    2seater 2 3
    compact 25 22
    midsize 20 21
    minivan 6 5
    pickup 16 17
    subcompact 19 16
    suv 29 33
    是一个list还是一个什么?如果我想直接由数据生成,类似的应该怎么做?

    回复
    回复

    • 写长城的诗6/19/2012 7:17 上午

      你好,table是一个生成二维频率表的函数,它会自动为落在两个变量中的样本计数。为了能直接操作data.frame中的变量,所以需要用到with函数,如果不用with的话,可以这么弄:table(mpg$class,mpg$year)

      提取中的表格是一种table格式,你可以通过class函数来了解任何一个对象的属性。

      不明白你说的直接由数据生成是什么意思?生成什么东西?





    • gardenia.kitty6/19/2012 4:28 下午

      我昨天继续看了下,year和class是dimensionname,平时一般只有colname和rowname所以没弄明白。
      我是想知道,怎么给data.frame添加dimensionname。我一会查看看,应该就找到了。
      非常感谢













二维码

扫码加我 拉你入群

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

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

关键词:ggplot2 gplot 绘图入门 plot 条形图 identity library dodge 汽车 元素

已有 3 人评分经验 学术水平 热心指数 信用等级 收起 理由
风敲竹 + 100 + 5 + 5 + 5 观点有启发
ltx5151 + 20 根据规定进行奖励
epoh + 3 + 3 + 3 精彩帖子

总评分: 经验 + 120  学术水平 + 8  热心指数 + 8  信用等级 + 8   查看全部评分

如果该贴对您有些许帮助,希望你能回复一下或者评一下热心指数!谢谢!
沙发
dsk2012 发表于 2012-12-6 22:42:43 |只看作者 |坛友微信交流群
我来看看先

使用道具

藤椅
dsk2012 发表于 2012-12-8 22:41:40 |只看作者 |坛友微信交流群
看看

使用道具

板凳
winthander 发表于 2012-12-10 10:27:11 |只看作者 |坛友微信交流群
非常感谢楼主

使用道具

报纸
qianhk 发表于 2014-7-28 14:30:32 |只看作者 |坛友微信交流群
看不到图层呀

使用道具

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

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

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

GMT+8, 2024-4-27 17:54