前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggBubbles--气泡图的不同画法!

ggBubbles--气泡图的不同画法!

作者头像
作图丫
发布2022-04-28 08:02:22
1.3K0
发布2022-04-28 08:02:22
举报
文章被收录于专栏:作图丫

导语

气泡图(bubble chart)可用于展示三个变量之间的关系。

背景介绍

气泡图在我们做功能富集的时候最常用到,下面是一个很常见实例。

今天小编给大家介绍一个不同的气泡图画法--mini bubble plots,在比较离散数据时,迷你气泡图允许通过颜色、形状或标签显示比传统气泡图更多的信息。使用R包ggBubbles可以方便地绘制这种气泡图。

R包安装

代码语言:javascript
复制
require(ggplot2)
require(ggBubbles)
require(dplyr)
require(tibble)

结果解析

01

两种气泡图比较

在这里,我们展示了在某些具有离散数据的用例中 MiniBubble 图与传统 Bubbleplot 相比的优势。

实例数据:

代码语言:javascript
复制
data(MusicianInterestsSmall)
head(MusicianInterestsSmall)

传统气泡图

传统的气泡图能够按大小描绘能够演奏爵士乐或古典音乐的吉他手或钢琴手的数量,并通过颜色编码显示平均体验水平。

代码语言:javascript
复制
ggplot(data = MusicianInterestsSmall %>% 
               group_by(Instrument, Genre) %>% 
               summarize(Count = n(), AvgLevel = mean(as.integer(Level))),
        aes(x = Instrument, y = Genre, size = Count, col = AvgLevel)) +
        geom_point() + theme_bw(base_size = 18) +
        scale_colour_gradientn(
            colours  = rev(topo.colors(2)),
            na.value = "transparent",
            breaks   = as.integer(MusicianInterestsSmall$Level) %>% 
                             unique %>% sort,
            labels   = levels(MusicianInterestsSmall$Level),
            limits   = c(as.integer(MusicianInterestsSmall$Level) %>% min,
                         as.integer(MusicianInterestsSmall$Level) %>% max)) +
        scale_size_continuous(range = c(3, 11))

迷你气泡图

MiniBubble 图允许单独显示每个音乐家及其相应的技能水平:

代码语言:javascript
复制
ggplot(data = MusicianInterestsSmall,
       aes(x = Instrument,
           y = Genre,
           col = Level)) +
       geom_point(position = position_surround(), size = 4) +
       scale_colour_manual(values = c("#00e5ff",
                                      "#4694ff",
                                      "#465aff",
                                      "#2c00c9")) + 
       theme_bw(base_size = 18)

02

偏移参数

MiniBubble图是由传递给 geom_point 的位置参数的 position_surround() 函数完成的。这些点将围绕中心按顺时针方向填充。

散点的偏移量可以作为参数传递给 position_surround()。

代码语言:javascript
复制
ggplot(data = MusicianInterestsSmall,
       aes(x = Instrument,
           y = Genre,
           col = Level)) +
       geom_point(position = position_surround(offset = .2), size = 4) +
       scale_colour_manual(values = c("#00e5ff",
                                      "#4694ff",
                                      "#465aff",
                                      "#2c00c9")) + 
       theme_bw(base_size = 18)

03

实例

使用一个更大些的数据集看看效果

代码语言:javascript
复制
data(MusicianInterests)
head(MusicianInterests)

基础图形大概是这样滴

代码语言:javascript
复制
p <- ggplot(data        = MusicianInterests,
            aes(x       = Genre,
                y       = Instrument,
                col     = Level)) +
    geom_point(size     = 1.8, 
               position = position_surround(offset = .2))

让我们优化一下细节!

代码语言:javascript
复制
p <- p + theme_bw(base_size = 17) + 
    theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
    scale_colour_gradientn(
            colours  = rev(topo.colors(2)),
            na.value = "transparent",
            breaks   = 1:6,
            labels   = c("Interested",
                         "Beginner",
                         "Intermediate",
                         "Experienced",
                         "Very experienced",
                         "Pro")) +
    xlab("") + ylab("")
p

一幅漂亮的MiniBubble图就完成啦!

小编总结

ggBubbles主要是通过position_surround()‍函数实现了位置参数的添加,从而将原本用大小表示的数量细分到具体的类别,更清楚的表示了数据分布。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作图丫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档