0

想象一下,我在 ggplot2 中有一个饼条,

data <- data.frame(cluster = paste("Cluster", 1:3), size = c(0.33, 0.33, 0.33))
data = rbind(data, data)

ggplot(data, aes(x = factor(1), fill = cluster, weight=size)) + 
  geom_bar(width = 1) + coord_polar(theta="y")+ theme_bw() + 
  scale_x_discrete("",breaks=NULL) + scale_y_continuous("",breaks=NULL) +
  theme(panel.border=element_blank(), 
        strip.text=element_blank(), 
        strip.background=element_blank(), 
        legend.position="none", 
        panel.grid=element_blank())

还有另一个强度向量 I 由向量 (0.2, -1, 1) 表示。我喜欢将每个切片着色为从蓝色到红色的渐变。比如说,蓝色代表-1,红色代表1。

4

1 回答 1

1

首先,我建议一个更清晰的数据框,它一次包含所有数据,创建如下:

> data <- data.frame(cluster = paste("Cluster", 1:3), size = c(0.2, 0.3, 0.5), strength = c(0.2, -1, 1))
> data
    cluster size strength
1 Cluster 1  0.2      0.2
2 Cluster 2  0.3     -1.0
3 Cluster 3  0.5      1.0

然后下面的最小代码生成一个饼图,其中填充颜色根据集群的强度值在中点零附近的范围内发散:

> ggplot(data, aes( x = factor(1), group = cluster, fill = strength, weight = size)) + geom_bar(width = 1) + coord_polar( theta = "y") + scale_fill_gradient2()

作为参考,请查看 geom_bar 文档页面中的 scale_fill_gradient2 文档页面示例: http ://docs.ggplot2.org/current/scale_gradient2.html http://docs.ggplot2.org/current/geom_bar.html

于 2013-05-16T12:42:58.430 回答