R的圆形气泡图

时间:2016-06-15 12:07:34

标签: r geometry drawing data-visualization bubble-chart

我想在R中重现以下情节:

bubble chart

我现在正在使用 packcircles 包,我可以在图中创建绘图:

packcircles plot

使用以下代码:

require(packcircles)
res <- circleLayout(xyr, limits, limits, maxiter = 1000)
dat <- circlePlotData(res$layout)

doPlot <- function(dat, title)
ggplot(dat) + 
geom_polygon(aes(x, y, group=id), colour="tomato", fill="tomato", alpha=0.3) +
coord_equal(xlim=limits, ylim=limits) +
theme_bw() +
theme(axis.text=element_blank(),
    axis.ticks=element_blank(),
    axis.title=element_blank()) +
labs(title=title)

doPlot(dat, "")

其中 xyr 是以下格式的数据框:

          x           y    r
1  2.897344 -10.4161236 0.57
2  1.932411  13.0631120 0.52
3  6.839500 -11.0507209 0.52
4 11.117047 -17.6440597 0.77
5 22.395529  -0.6191146 0.45
6 20.313309 -13.3292887 0.69

和输出 dat 形式:

         x         y id
1 10.72973 -14.18673  1
2 10.71182 -14.04498  1
3 10.65923 -13.91213  1
4 10.57524 -13.79654  1
5 10.46515 -13.70546  1
6 10.33587 -13.64463  1

这是一个好的开始,但我需要根据某个变量对圆圈进行标注和着色。显然, dat 中的行与输入数据帧中的行顺序不同。因此,我注意到能够在 ggplot2 中添加任何其他信息到 dat (例如,一个新变量)用于按颜色对圆圈进行分组,因为我丢失了任何信息引用原始数据。

根据@rawr的建议,我使用 bubbles 包使用以下代码重现该图:

require(bubbles)
text = as.character(seq(from = 1, to = 476))
bubbles(value = count,
        color = rainbow(length(count), alpha=NULL)[sample(length(count))],
        label = text,
        width=1600, height=1600)

其中 count 是[0,1]中的数字向量。输出如下:

bubbles plot

图书馆允许为每个圆圈提供不同的颜色,但不可能按组颜色圈。此外,它允许以非常简单的方式设置标签,与 packcircles 不同。无论如何,我无法直接从R导出绘图,但我不得不将其作为R Markdown文档的一部分输出。

0 个答案:

没有答案