美文网首页
可视化:bubble

可视化:bubble

作者: 生信云笔记 | 来源:发表于2022-11-13 12:19 被阅读0次

      今天继续分享生信分析中常见的图形 -- bubble。与散点图相比,气泡图在点的大小上面增加了一个维度的信息,属于一种特别的散点图。如果再结合plotlyhtmlwidgets包生成交互式的气泡图,那么能够呈现的信息就会更多。

    示例数据

      下面绘图使用的数据集 gapminder 来自 R 包gapminder ,如果安装了该包可以直接使用,没有安装的话可以直接从github上下载:https://github.com/jennybc/gapminder/blob/main/data/gapminder.rdata。本人还是直接下载数据来使用了。

    load('gapminder.rdata')
    data <- gapminder[gapminder$year==2007,]
    data$gdpPercap <- round(data$gdpPercap,0)
    data$pop <- round(data$pop/1000000,2)
    data$lifeExp <- round(data$lifeExp,1)
    data$text <-  paste("Country: ", data$country, "\nPopulation (M): ", data$pop, "\nLife Expectancy: ", data$lifeExp, "\nGdp per capita: ", data$gdpPercap, sep="")
    head(data)
    # A tibble: 6 × 7
    #  country     continent  year lifeExp   pop gdpPercap text
    #  <fct>       <fct>     <int>   <dbl> <dbl>     <dbl> <chr>
    #1 Afghanistan Asia       2007    43.8  31.9       975 "Country: Afghanistan\nPo…
    #2 Albania     Europe     2007    76.4   3.6      5937 "Country: Albania\nPopula…
    #3 Algeria     Africa     2007    72.3  33.3      6223 "Country: Algeria\nPopula…
    #4 Angola      Africa     2007    42.7  12.4      4797 "Country: Angola\nPopulat…
    #5 Argentina   Americas   2007    75.3  40.3     12779 "Country: Argentina\nPopu…
    #6 Australia   Oceania    2007    81.2  20.4     34435 "Country: Australia\nPopu…
    
    

      选取数据集中2007年的数据绘图,并对其中的数据小数保留精度做了一些调整。其中pop转化为百万单位(M),并增加一列包含CountryPopulationLife ExpectancyGdp per capita信息,用于后面绘制交互式气泡图。

    绘图

      废话不多说,基础气泡图绘制代码如下:

    library(ggplot2)
    library(viridis)
    
    p <- ggplot(data, aes(x=gdpPercap, y=lifeExp, size = pop, color = continent, text=text)) +
               geom_point(alpha=0.7) +
               scale_size(range = c(1.4, 19), name="Population (M)") +
               scale_color_viridis(discrete=TRUE) +
               theme_minimal() +
               theme(legend.position="none")
    p
    

    结果如下:

      绘图过程还是挺简单的,颜色美化依旧使用的是viridis包的配色方案。气泡默认会根据数据的大小映射为不同的大小,但有时候默认映射不符合审美时,我们可以使用scale_size函数来调整气泡的大小。

    交互

      将上面绘图的基础气泡图,变成交互式的动图,代码如下:

    library(plotly)
    library(htmlwidgets)
    
    pp <- ggplotly(p, tooltip="text", height=5, width=7)
    saveWidget(pp, file="ggplotlyBubble.html")
    

    结果如下:

      基础气泡图变成交互式气泡图后,鼠标移动到气泡上面时就会呈现出相应的信息(前面增加的一列信息)。交互式的图显然增加了展示的信息量,但其使用场景有所限制,多见于网页里面。

    往期绘图

    可视化:scatterplot
    可视化:barplot
    可视化:泡泡图
    可视化:小提琴图
    可视化:分组环状条形图

    相关文章

      网友评论

          本文标题:可视化:bubble

          本文链接:https://www.haomeiwen.com/subject/fzchtdtx.html