气泡图

气泡图是一种多变量图表,是散点图的变体,也可以认为是散点图和百分比区域图的组合[1]。气泡图最基本的用法是使用三个值来确定每个数据序列,和散点图一样。气泡图通过气泡的位置及面积大小,可分析数据之间的相关性。

本文可以看作是《R语言数据可视化之美》的学习笔记。前两部分可见(跳转):

该书对气泡图的绘制并不是非常详细,小编将内容进行了大量拓展。下面的例子将一步步带你完成气泡图的绘制。本文内容丰富,希望大家都能学到自己想要的内容。

下面的例子将一步步带你完成气泡图的绘制。本文内容丰富,希望大家都能学到自己想要的内容。

本文框架

数据介绍

数据集来源gapminder包中,包含了1704行和6个变量。其中6个变量含义分别为:

country 国家142个水平

continent 大陆5个水平

year 1952年-2007年(间隔为5年)

lifeExp 出生预期寿命,以年计数

pop 人口数

gdpPercap 人均国内生产总值(扣除通货膨胀因素后的美元)

由于数据过多,我们感兴趣的是年份为2007年的数据,所以使用dplyr包进行数据处理,具体数据处理案例可见我写的另一篇推送:[R数据科学]tidyverse数据清洗案例详解。数据缩略版如下:

手把手绘制

geom_point()函数构建

气泡图是添加了第三维度的散点图:附加数值变量的值通过点的大小表示。(来源:data-to-viz[2])。使用ggplot2,可以通过geom_point()函数构建气泡图。aes()设定至少三个变量:x、y和size。其实就是散点图绘制的升级版吧,aes()中多了一个参数。

ggplot(data, aes(x=gdpPercap, y=lifeExp, size = pop)) +

geom_point(alpha=0.7)

上图展示了世界各国的预期寿命(y)与人均国内生产总值(x)之间的关系。每个国家的人口用圆的大小表示。但是这个图不是非常美观,而且圆的大小并不是很直观,大家都差不多大。接下来对圆的大小进行设定。

scale_size()控制圆的大小

scale_size()允许使用range参数设置最小和最大的圆的大小,用name改变图例名称(scale_size(range = c(0.1, 24), name="Population (M)"))。

图中可以看到,有些圆圈重叠了。k可将点的透明度进行调整(geom_point(alpha=0.5))

为了避免在图表顶部出现大的圆圈,可以将数据集进行排序(arrange(desc(pop))),代码如下。

data %>%

arrange(desc(pop)) %>%

mutate(country = factor(country)) %>%

ggplot(aes(x=gdpPercap, y=lifeExp, size = pop)) +

geom_point(alpha=0.5) +

scale_size(range = c(.1, 24), name="Population (M)")

现在图可读性有所提高,但如果数据集中还有一个变量想加入图中该怎么办呢?

添加第四个维度:颜色

这里可以用每个国家的洲来控制圆圈的颜色(aes(x=gdpPercap, y=lifeExp, size=pop, color=continent)):

data %>%

arrange(desc(pop)) %>%

mutate(country = factor(country, country)) %>%

ggplot(aes(x=gdpPercap, y=lifeExp, size=pop, color=continent)) +

geom_point(alpha=0.5) +

scale_size(range = c(.1, 24), name="Population (M)")

该图基本可以满足我们日常生活的气泡图的可视化了。相信大家通过前面的详细的介绍,应该可以自行绘制,只要换个数据,懂得各个代码的含义即可。后面是图表美化的过程,参考thr R Graph Gallery: Bubble plot with ggplot2[3]。

美化气泡图

一些经典的改进

使用viridis包的调色板:(scale_fill_viridis(discrete=TRUE, guide=FALSE, option="A"))

使用hrbrthemes包的theme_ipsum()

使用xlab和ylab自定义轴标题

为圆添加描边:将形状改为21,并指定颜色(描边)和填充

library(hrbrthemes)

library(viridis)

# Most basic bubble plot

data %>%

arrange(desc(pop)) %>%

mutate(country = factor(country)) %>%

ggplot(aes(x=gdpPercap, y=lifeExp, size=pop, fill=continent)) +

geom_point(alpha=0.5, shape=21, color="black") +

scale_size(range = c(.1, 24), name="Population (M)") +

scale_fill_viridis(discrete=TRUE, guide=FALSE, option="A") +

theme_ipsum() +

theme(legend.position="bottom") +

ylab("Life Expectancy") +

xlab("欢迎关注:庄闪闪的成长手册 \nq Gdp per Capita") +

theme(legend.position = "none")

带数据标签

这里使用ggrepel包中的(geom_text_repel()),可以给每个点自动加入标签,我这里是加入了各个国家名字,其他可以根据你实际需求进行设置。

library(ggrepel)

data1 = data %>%

mutate(country = factor(country)) %>% head(20)

attach(data1)

ggplot(data1,aes(x=gdpPercap, y=lifeExp, size=pop, fill=continent)) +

geom_point(alpha=0.5, shape=21, color="black") +

scale_size(range = c(.1, 24), name="Population (M)") +

geom_text_repel(label = country,size=5)+

scale_fill_viridis(discrete=TRUE, guide=FALSE, option="A") +

theme_ipsum() +

theme(legend.position="bottom") +

ylab("Life Expectancy") +

xlab("欢迎关注:庄闪闪的成长手册 \nq Gdp per Capita") +

theme(legend.position = "none")

如果不喜欢圆形的气泡图,可以将代码中的shape=21进行更改,正方形是shape=22,得到的图如下:

拓展知识

其他扩展可自行学(小编做推送的时候已经学过啦,但是篇幅有限,就没继续整理下去了)

GOplot包

[4]提供了直接做气泡图的方法,函数是:GOBubble。

BUBBLE PLOT理论定义

[5]

plotly包

[6]绘制可以互动的气泡图

参考资料

[1]

R语言数据可视化之美: R语言数据可视化之美

[2]

data-to-viz: https://www.data-to-viz.com/graph/bubble.html

[3]

thr R Graph Gallery: Bubble plot with ggplot2: https://www.r-graph-gallery.com/320-the-basis-of-bubble-plot.html

[4]

GOplot包: https://wencke.github.io/

[5]

BUBBLE PLOT理论定义: https://www.data-to-viz.com/graph/bubble.html

[6]

plotly包: https://plotly.com/r/bubble-charts/

python 气泡图 聚类_R可视化 | 气泡图相关推荐

  1. python 气泡图 聚类_可视化数据分析软件 气泡图

    简介: 想在1天内快速搞定实时业务数据大屏吗?想用最短路径逆袭成为数据可视化大神吗?想在除了PRD外什么都没有的情况下,体验职场真人版绝境求生吗? 概念:LADV是 以上例子中,生成的可视化图表,均可 ...

  2. python中动态气泡图标签_Python可视化-气泡图

    气泡图类似散点图,也是表示XY轴坐标之间的变化关系,也可以像彩色散点图给点上色. 区别在于可以通过图中散点的大小来直观感受其所表示的数值大小. 一.数据文件准备 1.PeopleNumber.csv ...

  3. Python使用matplotlib可视化气泡图、并使用encircle函数自定义多边形圈定可视化图像中的指定区域(Bubble plot with Encircling)

    Python使用matplotlib可视化气泡图.并使用encircle函数自定义多边形圈定可视化图像中的指定区域(Bubble plot with Encircling) 目录

  4. R语言ggplot2可视化气泡图:无填充色的气泡图、自定义填充色的气泡图

    R语言ggplot2可视化气泡图:无填充色的气泡图.自定义填充色的气泡图 目录 R语言ggpl

  5. R语言ggplot2可视化气泡图(bubble plot)、将可视化图像的图例(lengend)放置在图像底部、图例水平方向排布(horizontal direction)、图例标题在图例标签顶部

    R语言ggplot2可视化气泡图(bubble plot).将可视化图像的图例(lengend)放置在图像底部.图例水平方向排布(horizontal direction).图例标题在图例标签顶部(l ...

  6. Python、R绘制多彩气泡图

    Python.R绘制多彩气泡图 在工作中面对这么一个问题,使用软件实现二维气泡图,需要在每个气泡加上标签等信息.搜了一圈,关于此类的文章较少,故写篇总结,和大家一起探讨使用. 这里从网上随便找到一个数 ...

  7. python音频聚类_用K-means聚类算法实现音调的分类与可视化

    本文由 伯乐在线 - ggspeed 翻译,耶鲁怕冷 校稿.未经许可,禁止转载! 英文出处:jared polivka.欢迎加入翻译组. 利用 K-means 聚类算法来聚类和可视化音调 Galvan ...

  8. Py之pyecharts:python包之数据可视化包pyecharts简介、安装、使用方法之详细攻略

    Py之pyecharts:python包之数据可视化包pyecharts简介.安装.使用方法之详细攻略 目录 pyecharts简介 pyecharts的安装 pyecharts的使用方法 1.图形绘 ...

  9. python基于web可视化_独家 | 基于Python实现交互式数据可视化的工具(用于Web)

    转自:数据派ID:datapi 作者:Alark Joshi 翻译:陈雨琳 校对:吴金笛 本文2200字,建议阅读8分钟. 本文将介绍实现数据可视化的软件包. 这学期(2018学年春季学期)我教授了一 ...

最新文章

  1. 谁动了我的主机? 之活用History命令|Linux安全运维
  2. JSP GridView --使用自定义标签实现ASP.NET的控件
  3. python scatter参数详解_matplotlib.pyplot.scatter散点图结构及用法||参数详解
  4. asp.net 路径(转)
  5. foundation框架之反射机制
  6. 【HDU - 5706】GirlCat(bfs)
  7. Sublime 的中文乱码问题
  8. echart 三维可视化地图_揭秘720°三维全景3D实景地图制作技术
  9. Webservice检查
  10. 软件开发整理的一些工具
  11. 21 , CSS 构造模型
  12. Log4j不同级别输出到不同文件的几种方式
  13. MyBatis官方下载地址(含mybatis-spring)
  14. JAVA微信小程序购物商城系统毕业设计 开题报告
  15. C语言版数据结构计算顺序表中X的个数,设计算法。数据结构课后习题,定义顺序表,查找顺序表中X元素的个数。
  16. 绘图板应用讲解计算机,如何用数位板在电脑上画画?5个板绘使用技巧分享!...
  17. 瑞萨单片机-PWM输出
  18. 薅羊毛php源码,薅羊毛软件-抢福袋源码分享
  19. set_set_switching_activity
  20. 一些触动人心的动效设计欣赏

热门文章

  1. 一天一阔阔儿ZYNQ的linux移植完整版(Linux环境搭建以及内核编译)
  2. w7设置双显示器_Win7系统如何设置双屏显示?
  3. Autosar Nm机制
  4. AI背景下的新零售行业商业模式
  5. Css3中-moz、-ms、-webkit的使用
  6. 邮件服务器域名怎么查看,如何查看企业邮箱是哪里的域名
  7. JAVA使用 Shade 进行依赖冲突处理
  8. 突破传统—复旦大学大数据学院张力课题组提出语义分割全新方案
  9. 禁止页面在浏览器中打开 只能在微信内核浏览器中打开
  10. 利用python识别身份证号后获取年龄和性别信息