我想在R中重现以下情节:
我现在正在使用 packcircles 包,我可以在图中创建绘图:
使用以下代码:
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]中的数字向量。输出如下:
图书馆允许为每个圆圈提供不同的颜色,但不可能按组颜色圈。此外,它允许以非常简单的方式设置标签,与 packcircles 不同。无论如何,我无法直接从R导出绘图,但我不得不将其作为R Markdown文档的一部分输出。