r - R ggplot2:如何绘制具有纯色和透明笔划并根据颜色着色的geom_points?
问题描述
我想制作一个散点图,其中每个点都有一个球体。点及其球体都根据某些列值着色。
一个显示我想要的最小示例:
library(ggplot2)
library(vcd) # only needed for example dataset
ggplot(Arthritis, aes(x = ID, y = Age)) +
geom_point(aes(color=Sex), size=10, alpha=.3) +
geom_point(aes(color=Treatment), size=3)
这个“解决方案”的问题在于,使用geom_point
两层似乎会破坏传说。我想只有一层并使用同时添加笔触的形状也会更有意义geom_point
,所以像这样:
ggplot(Arthritis, aes(x = ID, y = Age)) +
geom_point(aes(color=Sex, fill=Treatment), shape=21, size=5, stroke=5)
这里的传说更有意义,但是,我不知道如何使笔触透明。这很重要,因为当点重叠时您将看不到任何东西。
像这样的答案不能解决我的问题,因为它们使用恒定的颜色,因此可以使用该功能alpha
。但是,我无法弄清楚是否以及如何将其与取决于数据的颜色一起使用。
TL;DR:如何绘制geom_points
具有纯色和透明笔触但不是恒定颜色的?
解决方案
你在正确的轨道上认识到你可以使用这个功能alpha()
,并且已经意识到你不能仅仅把它放在alpha()
里面aes()
。但是,您可以在任何函数中alpha()
作为参数传递。这是一个使用示例:values=
scale_*
mtcars
ggplot(mtcars, aes(mpg, disp)) +
geom_point(
aes(color=factor(cyl), fill=factor(carb)),
shape=21, size=4, stroke=4) +
scale_color_manual(values=alpha(rainbow(3), 0.2))
一个问题是 " 图例周围的那些大黑线对我来说不太合适。超级 ew。您可以使用该功能factor(carb)
摆脱它们,并使用指定您想要在那里显示的内容以及替换它的内容。在在这种情况下,您可以将继承的美学设置为透明(仅保留部分)。guides()
override.aes=
color=NA
fill=
ggplot(mtcars, aes(mpg, disp)) +
geom_point(
aes(color=factor(cyl), fill=factor(carb)),
shape=21, size=4, stroke=4) +
scale_color_manual(values=alpha(rainbow(3), 0.2)) +
guides(fill=guide_legend(override.aes = list(color=NA))) +
labs(color="cyl", fill="carb")
顺便说一句,没有简单的方法可以将笔画“放在”填充部分的“后面” geom_point
。您可能可以为此编写自己的自定义 stat/geom,但geom_point
总是先填充,然后描边。
推荐阅读
- javascript - 在 React 中使用变量更新状态
- javascript - jQuery 代码在内部样式表中不起作用
- dart - 相机不打开应用拍照并上传
- node.js - 如何从 Groovy readyAPI 中另一个子值偏好的括号中获取子节点值
- laravel - 尝试登录时有没有办法检查“adminPassword”?
- sql-server - SQL Server 存储过程在继续访问 db 时随机花费比正常时间更长的时间
- python - 我想重复我的代码 x 时间我该怎么办?
- excel - 无法设置 Range 类的 FormulaArray 属性(并且公式已经分为三部分)
- ssrs-2012 - 无法导出 3M 记录数据报告
- android - 使用 zxing 将 Qr 结果加载到 webview url