r - 如何在气泡图中用不同颜色显示图例中的确切值
问题描述
我有以下数据:
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 个圆圈(最好不要手动执行此操作),并且每个圆圈具有不同的颜色。
我怎样才能做到这一点?
解决方案
为了扩展图例,您需要定义所需的中断,在这种情况下,我使用该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)
推荐阅读
- python-2.7 - 自 2019 年 7 月 30 日起,独立的 App Engine SDK 已弃用。如何迁移 pycharm python2.7 应用程序
- javascript - 无法使用 html2canvas 拍摄谷歌地图快照
- vba - 从邮件合并中保存单个文档时出错
- javascript - React + 为第三方 url 的 CSS 和 Js 添加缓存清除
- node.js - GENERATE_SOURCEMAP=false 问题
- c# - 如何检查特定用户是否对远程机器上的特定文件夹具有读/写/任何权限?C#
- python - 在 python,BS4 上解析数据时得到“无”
- javascript - 在 Chrome 和 Edge 中工作但在 IE 中不工作的代码 - setimeout?
- php - 发送成功事件的电子邮件通知
- c++ - 如何从文件系统打印特定名称文件