绘制散点图(scatterplots)使用geom_point()函数,气泡图(bubblechart)也是一个散点图,只不过点的大小由一个变量(size)来控制。散点图潜在的最大问题是过度绘图:当一个位置或相邻的位置上出现有多个点,就可能把点绘制在彼此之上, 这会严重扭曲散点图的视觉外观,你可以通过使点变得透明(geom_point(alpha = 0.05))或者设置点的形状(geom_point(shape = "."))来帮助解决该问题。

geom_point(mapping = NULL, data = NULL, stat = "identity",position = "identity", ..., na.rm = FALSE, show.legend = NA,inherit.aes = TRUE)

参数注释:

  • stat:统计转换(statistical transformation),默认值是identity,表明变量的值是就是统计的值;而统计函数count 需要对变量的值进行计数,统计值是计数的结果。
  • position:位置调整(Position adjustment),默认值是identity,不调整
  • mapping:映射参数

点的位置调整(Position adjustment)有多种方式:

  • identity:不调整
  • dodge:垂直方向不调整,只调整水平位置
  • nudge:在一定的范围内调整水平和垂直位置
  • jitter:抖动,当具有离散位置和相对较少的点数时,抖动很有用
  • jitterdodge:同时jitter和 dodge
  • stack:堆叠,
  • fill:填充,用于条形图

每个位置调整都对应一个函数position_xxx()。

使用aes()函数来设置映射参数,geom_point()函数可以使用的映射有:

  • x
  • y
  • alpha:设置点重叠部分的透明度
  • colour:点的颜色
  • fill:点的填充色
  • group:分组
  • shape:点形状
  • size:点的大小
  • stroke:描边

这些参数用于修改散点图的图形属性。

一,绘制基本的点图

使用mtcars数据集来绘制散点图,并根据cyl字段来设置每个点的颜色:

library(ggplo2)ggplot(mtcars, aes(wt, mpg))+geom_point(aes(colour = factor(cyl)))

二,绘制气泡图

使用geom_point(),绘制气泡图,并添加水平线:

library(ggplot2)#win.graph(width=5, height=4,pointsize=8)df <- data.frame(year=rep(c(2017,2018),3),product=rep(c('ProductA','ProductB','ProductC'),2),ratio=runif(6, min = 0, max = 1))df <- df[order(df$year),]df <- within(df,{bubblesize<- sqrt(df$ratio*10/pi)})
df$product <- factor(df$product,levels=unique(df$product),ordered=TRUE)
ratio.mean <- mean(df$ratio)
y.min <- min(df$ratio)mytheme <- theme_minimal()+theme(panel.grid.major.y=element_blank(),panel.grid.minor.y=element_blank(),axis.text.x = element_text(angle = 45, hjust = 1),plot.title=element_text(hjust =0.5),axis.line.y=element_line(linetype=1,color='grey'),axis.line.x=element_line(linetype=1,color='grey'),axis.ticks = element_line(linetype=2,color='grey'),panel.grid=element_line(linetype=2,color='grey'),legend.background = element_rect(fill="gray90", size=0,color='white'),legend.text=element_text(face="bold",size=8),legend.title=element_text(face="bold",size=8),axis.text=element_text(face="bold",size=8))ggplot(data=df, mapping=aes(x=product,y=ratio,color=factor(year)))+geom_point(stat= "identity",aes(size=bubblesize),alpha=0.7,show.legend = TRUE)+ guides(color=guide_legend(title="Year"))+scale_size(range = c(1, 30),guide=FALSE)+scale_color_manual(values=c("#666666","#FF0016"))+scale_y_continuous(labels = scales::percent,limits=c(y.min,1))+labs(x='Product',y='Increase ratio',title='Product increase ratio')+geom_text(aes(y=ratio,label=scales::percent(ratio),hjust=0.5), size=3,color="black",position = position_dodge(width=0.00),check_overlap = FALSE) +mytheme+geom_hline(yintercept = ratio.mean,linetype='dashed')+annotate(geom='text',x=0,y=ratio.mean,label=scales::percent(ratio.mean),hjust=-0.4,vjust=-0.5);

其中,scale_size()图层用于指定bubble的大小,annotate()函数用于为水平线添加文本说明:

参考文档:

ggplot2 geom_point

Creating and Tweaking Bubble Chart with ggplot2

R绘图 第九篇:绘制散点图和气泡图(ggplot2)相关推荐

  1. R绘图笔记 | 一般的散点图绘制

    可先阅读文章:R绘图笔记 | R语言绘图系统与常见绘图函数及参数 1.利用plot()绘制散点图 R语言中plot()函数的基本格式如下: plot(x,y,...) plot函数中,x和y分别表示所 ...

  2. python气泡图的地图_基于Python图表绘图系统:matplotlib散点图和气泡图,你了解吗?...

    惯例先来简单介绍下什么是散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式.散点图将序列显示为一组点.值由点在图表中的位置表示.类别由图表中的不同 ...

  3. Python使用Plotly绘图工具,绘制散点图、线形图

    今天在研究Plotly绘制散点图的方法 使用Python3.6 + Plotly Plotly版本2.0.0 在开始之前先说说,还需要安装库Numpy,安装方法在我的另一篇博客中有写到:https:/ ...

  4. python随机画散点图-Python使用Plotly绘图工具,绘制散点图、线形图

    今天在研究Plotly绘制散点图的方法 使用Python3.6 + Plotly Plotly版本2.0.0 因为Plotly没有自己独立的线性图形函数,所以把线性图形与散点图形全部用一个函数实现 这 ...

  5. matplotlib绘制直方图,饼图,散点图,气泡图,箱型图,雷达图

    matplotlib绘制直方图,饼图,散点图,气泡图,箱型图,雷达图 一.直方图 用10000个正态分布随机数画直方图 二.绘制饼图或者圆环图 圆环图 根据消费支出画圆环图 三.绘制散点图或气泡图 使 ...

  6. R绘图笔记 | 火山图的绘制

    参考前文:R绘图笔记 | R语言绘图系统与常见绘图函数及参数 关于绘图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R绘 ...

  7. R绘图笔记 | 小提琴图与漂亮的云雨图绘制

    参考前文:R绘图笔记 | R语言绘图系统与常见绘图函数及参数 关于绘图图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R ...

  8. R语言绘图—热图绘制

    R语言绘图-热图绘制 原创 R语言与医学生  2022-06-24 20:59 发表于广东 热图使用颜色来表示二维图中第三个变量的变化和大小.热图能清楚直观的看到数据的变化.今天就简单介绍下R语言中热 ...

  9. python—matplotlib 散点图,气泡图,气泡饼图/功效矩阵可视化对比

    python-matplotlib 散点图,气泡图,气泡饼图/功效矩阵可视化对比 刚入行,一直在看大神们的发帖学习,想着自己也写点什么东西,找了好久没找到气泡饼图相关的内容(可能是我眼神不好),于是打 ...

  10. python 三维散点图拟合曲面_python 绘图---2D、3D散点图、折线图、曲面图

    python中绘制2D曲线图需要使用到Matplotlib,Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形,通过 Matplo ...

最新文章

  1. Java 计算学生的考试成绩
  2. linux挂载VMFS硬盘,ESX4.1挂载NFS共享存储(VMkernel)
  3. 好代码是管出来的——.Net Core中的单元测试与代码覆盖率
  4. [Spring5]IOC容器_Bean管理注解方式_注入属性@Autowired_@Qualified_@Resource_@Value
  5. openjdk-7支持版本_长期支持对OpenJDK意味着什么?
  6. 解决小目标检测问题的几个途径
  7. 算术运算导致溢出。_【S7200指令教程】数据运算指令ADD SUB MUL DIV
  8. dataload mysql_如何向eova中添加新的数据源呢
  9. 如何用AltiumDesigner绘制STC89C51单片机原理图
  10. osx86 10.4.3 BF1118 的界面
  11. (转载)App原生开发、混合开发及HTML5开发的优劣
  12. 【Python】用150行代码模拟太阳系行星运转+源码
  13. 【STM32学习笔记】(7)——STM32时钟系统详解
  14. 微信小程序_头像昵称填写
  15. 安装 ubuntu 18.04登录界面卡死解决
  16. kubernetes 安装 Dashboard
  17. oracle安装缺少依赖包,ORACLE 安装提示缺少依赖包
  18. ChIPseeker入门到精通
  19. 人生苦短我用python壁纸_人生苦短,我用python
  20. UVC webcam驱动添加分辨率

热门文章

  1. android TouchEvent分发笔记(2016.03.14更新)
  2. java数据库查询类
  3. 公司打卡少几秒分析--学会拒绝,学会选择
  4. “鱼渔合作”在IT运维中的启示
  5. 第26讲 js函数调用过程内存分析 js函数细节
  6. linux内核C -- 第08课:变参函数的格式检查——format
  7. linux下QOS--理论篇
  8. linux 内核 内存管理 bootmem alloctor 申请内存
  9. 任务调度的合理性(拓扑排序)
  10. android activity 测试,android – 最快的方法来创建一个模拟Activity来进行测试