气泡图(bubble chart)

气泡图本质上是散点图,用点的大小来表示一个维度的数据,将三个维度的数据展示出来。

用ggplot2的geom_point就很容易绘制。

比如,我们现在有如下一组瞎编的六个人的身高和体重数据:

dat <- data.frame(
    姓名 = LETTERS[1:6],
    身高 = c(123, 120, 107, 177, 179, 174),
    体重 = c(87, 60, 180, 74, 79, 44))

这时候我们可以用散点图来直观的表示他们的身高和体重以及姓名。如上,先将数据存入一个叫dat的数据框。

载入需要用到的ggplot2包

library(ggplot2)

先做一个最简单的看看效果

ggplot(dat) +
    geom_point(aes(x=姓名, y=身高, size=体重))

当然,一般来说我们需要调整一下,让它变得好看一些。使用scale_size来调整点的面积的大小。 如果要用直径来表示则用scale_radius。

ggplot(dat) +
    geom_point(aes(x=姓名, y=身高, size=体重), shape=1) +
    scale_y_continuous(limits=c(0, 200), expand=c(0,0))+
    scale_size(limits=c(40, 180), breaks=c(40, 60, 80), range=c(4, 18), name="体重(Kg)") +
    xlab(NULL)+
    ylab("身高/cm") +
    theme_bw()+
    theme(legend.position="top")

或者我们还可以把体重数据标出来,把体重的图例去掉

ggplot(dat) +
    geom_point(aes(x=姓名, y=身高, size=体重), shape=1) +
    geom_text(aes(x=姓名, y=身高, label=体重))+
    scale_y_continuous(limits=c(0, 200), expand=c(0,0))+
    scale_size(limits=c(40, 180), breaks=c(40, 60, 80), range=c(4, 18), name="体重(Kg)") +
    xlab(NULL)+
    ylab("身高/cm") +
    theme_bw()+
    theme(legend.position="none")

效果看起来如下,很显然,点越大体重越大,比较直观看出体重的差别,也能够比较直观看出身高的差别。

另外,也可以给点加上颜色,让颜色的深浅表示一个维度的数据,或者表示分组。 这就显得很灵活了。很简单地使用? geom_point查看可以使用的维度。


本网页已被访问6938次。 最后编辑时间(Last modified): 2020/10/30 16:34