楼主: casey_c
4231 8

[程序分享] 用 ggplot2 绘制散点图 [推广有奖]

  • 0关注
  • 10粉丝

博士生

92%

还不是VIP/贵宾

-

威望
0
论坛币
96 个
通用积分
2.0091
学术水平
2 点
热心指数
15 点
信用等级
2 点
经验
11502 点
帖子
278
精华
0
在线时间
94 小时
注册时间
2016-11-22
最后登录
2022-5-2

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据可视化里面最常见的就是散点图了,怎么用 ggplot2 绘制经典的散点图以及进行一些图片细节的调整,今天再来搬运一下

以下面的数据为例:
  1. set.seed(955)
  2. # 构建一个含有噪声的递增数据组
  3. dat <- data.frame(cond = rep(c("A", "B"), each=10),
  4.                     xvar = 1:20 + rnorm(20,sd=3),
  5.                     yvar = 1:20 + rnorm(20,sd=3))
  6. head(dat)
  7.     #>   cond      xvar         yvar
  8.     #> 1    A -4.252354  3.473157275
  9.     #> 2    A  1.702318  0.005939612
  10.     #> 3    A  4.323054 -0.094252427
  11.     #> 4    A  1.780628  2.072808278
  12.     #> 5    A 11.537348  1.215440358
  13.     #> 6    A  6.672130  3.608111411
  14.    
  15. library(ggplot2)
复制代码
1.png
1、绘制带回归线的经典散点图
  1. ggplot(dat, aes(x=xvar, y=yvar)) +
  2.     geom_point(shape=1)      # 数据点由空心圆表示
  3.    
  4. ggplot(dat, aes(x=xvar, y=yvar)) +
  5.     geom_point(shape=1) +    # 数据点由空心圆表示
  6.     geom_smooth(method=lm)   # 添加回归线
  7.                                  # (默认显示95%置信区间)
  8.    
  9. ggplot(dat, aes(x=xvar, y=yvar)) +
  10.     geom_point(shape=1) +    # 数据点由空心圆表示
  11.     geom_smooth(method=lm,   # 添加回归线
  12.                 se=FALSE)    # 隐藏置信区间区域

  13. ggplot(dat, aes(x=xvar, y=yvar)) +
  14.     geom_point(shape=1) +    # 数据点由空心圆表示
  15.     geom_smooth()            # 添加局部加权回归的平滑拟合曲线
复制代码
2.png 3.png 4.png 5.png
2、按变量属性设置不同的颜色/形状
  1. # 按照cond给数据点设置不同颜色
  2. ggplot(dat, aes(x=xvar, y=yvar, color=cond)) + geom_point(shape=1)
  3.    
  4. # 添加不同颜色的回归线
  5. ggplot(dat, aes(x=xvar, y=yvar, color=cond)) +
  6.     geom_point(shape=1) +
  7.     scale_colour_hue(l=50) + # 调用颜色稍暗的调色板
  8.     geom_smooth(method=lm,   # 添加回归线
  9.                 se=FALSE)    # 隐藏置信区间区域
  10.    
  11. # 扩展回归线
  12. ggplot(dat, aes(x=xvar, y=yvar, color=cond)) + geom_point(shape=1) +
  13.     scale_colour_hue(l=50) + # 调用颜色稍暗的调色板
  14.     geom_smooth(method=lm,   # 添加回归线
  15.                 se=FALSE,    # 隐藏置信区间区域
  16.                 fullrange=TRUE) # 扩展回归线

  17. # 按照cond给数据点设置不同形状
  18. ggplot(dat, aes(x=xvar, y=yvar, shape=cond)) + geom_point()
  19.    
  20. # 改变形状的样式
  21. ggplot(dat, aes(x=xvar, y=yvar, shape=cond)) + geom_point() +
  22.     scale_shape_manual(values=c(1,2))  # 使用空心的圆和三角形
复制代码
6.png 7.png 8.png 9.png 10.png
具体的颜色和形状种类可详见Colors (ggplot2))和Shapes and linetypes
3、画布溢出的处理
如果我们的数据点非常的多,或是数据集中点的分布非常离散,那么在作图时就有可能会出现数据点溢出画布,或是数据点在画布上的分布过于集中的情况。
  1. # 将变量xvar和yvar的值归约为离原值最近的5的倍数
  2. dat$xrnd <- round(dat$xvar/5)*5
  3. dat$yrnd <- round(dat$yvar/5)*5
  4.    
  5. # 设置点的不透明度为1/4
  6. # 为了避免画布溢出,减少了样本点的使用量
  7. ggplot(dat, aes(x=xrnd, y=yrnd)) +
  8.     geom_point(shape=19,      # Use solid circles
  9.                 alpha=1/4)     # 1/4 opacity

  10. # 使数据点分散化
  11. # 分散区域为长0.5个单位宽1个单位的矩形区域
  12. ggplot(dat, aes(x=xrnd, y=yrnd)) +
  13.     geom_point(shape=1,      # Use hollow circles
  14.                 position=position_jitter(width=1,height=.5))
复制代码
11.png 12.png
以上内容来自 数析学院 ,我不生产代码,只是代码的搬用工
二维码

扫码加我 拉你入群

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

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

关键词:ggplot2 gplot plot GPL 散点图 散点图

已有 2 人评分经验 学术水平 热心指数 信用等级 收起 理由
日新少年 + 2 + 2 + 2 精彩帖子
飞天玄舞6 + 20 不错

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

本帖被以下文库推荐

沙发
houyunhuang 发表于 2016-11-29 12:45:11 |只看作者 |坛友微信交流群

使用道具

藤椅
smm1988 发表于 2016-11-29 12:55:56 |只看作者 |坛友微信交流群

使用道具

板凳
casey_c 发表于 2016-11-29 13:51:10 |只看作者 |坛友微信交流群

使用道具

报纸
日新少年 学生认证  发表于 2016-11-29 16:56:49 |只看作者 |坛友微信交流群
谢谢分享

使用道具

地板
pkl 在职认证  发表于 2016-11-29 21:22:27 |只看作者 |坛友微信交流群
很好的资料,感谢分享!

使用道具

7
casey_c 发表于 2016-11-30 15:31:15 |只看作者 |坛友微信交流群

使用道具

8
novelbean 发表于 2018-1-5 11:07:16 |只看作者 |坛友微信交流群
好的资料,感谢分享

使用道具

9
qdlichun 发表于 2018-3-31 23:12:04 |只看作者 |坛友微信交流群
下载学习了,说声谢谢

使用道具

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

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

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

GMT+8, 2024-5-11 11:08