首页 > 解决方案 > 如何在气泡图中用不同颜色显示图例中的确切值

问题描述

我有以下数据:

RW    GA    Freq
0     0     9
0     3     1
0     14    1
2     30    1
15    30    2
24    30    7
30    29    16
30    30    29

我想为这些数据生成气泡图,为此我编写了以下 R 脚本:

df <- read.csv("/home/Desktop/data.csv")
p <- ggplot(df, aes(x=RW, y=GA, size=Freq)) + geom_point(alpha=0.7) + 
    scale_size(range = c(1, 10), name="Freq", limits=c(1,30), breaks=c(1,10,30))

这会生成以下图:

在此处输入图像描述

我想要的是Freq在图例中显示确切的唯一值,其中每个圆圈代表具有不同颜色的值。在这种情况下,图例应显示值 1、2、7、9、16、29 的 6 个圆圈(最好不要手动执行此操作),并且每个圆圈具有不同的颜色。

我怎样才能做到这一点?

标签: rggplot2

解决方案


为了扩展图例,您需要定义所需的中断,在这种情况下,我使用该unique函数来收集值列表。

library(ggplot2)

df<-structure(list(RW = c(0L, 0L, 0L, 2L, 15L, 24L, 30L, 30L), 
                   GA = c(0L, 3L, 14L, 30L, 30L, 30L, 29L, 30L), 
                   Freq = c(9L, 1L, 1L, 1L, 2L, 7L, 16L, 29L)), 
              class = "data.frame", row.names = c(NA, -8L))

lbreaks<-sort(unique(df$Freq))

p <- ggplot(df, aes(x=RW, y=GA, size=Freq)) + geom_point(alpha=0.7) + 
  scale_size(range = c(1, 10), name="Freq", limits=c(1,30), breaks=lbreaks)
print(p)

在此处输入图像描述

编辑:要使用不同的颜色,您可以添加color=Freq到 aes 定义中。

ggplot(df, aes(x=RW, y=GA, size=Freq, color=as.factor(Freq))) + geom_point(alpha=0.7) + 
  scale_size(range = c(1, 10), name="Freq", limits=c(1,30), breaks=lbreaks) +
  scale_color_discrete(name="Freq", breaks=lbreaks)

推荐阅读