r - r缩放alpha不连续
问题描述
取以下数据
df <- data.frame(ID = c(1, 1, 2, 2, 3, 3),
cond = c(2, 2, 2, 2, 1, 1),
Time = c(1,2,1,2,1,2),
State = c(0, 0, 0, 1, 1, 0),
eyes = c(2, -3, -2, 1, 0, -2),
combination = c("1", "1","2", "2", "3", "3"))
df$cond <- factor(df$cond,levels = c("1", "2"))
ggplot(df, aes(x = Time, y = eyes)) +
ggforce::geom_link2(aes(group=ID, color = cond, alpha = State), size = 5, n = 500, lineend = "round") +
scale_color_manual(values=c("#CC6666", "#9999CC")) +
scale_alpha_continuous(range = c(0.01, 0.9)) +
scale_shape_manual(values=c(13,15)) +
theme(legend.title=element_blank(),
axis.title.x=element_text(size = 12),
axis.title.y=element_text(size = 12),
plot.title = element_text(hjust = 0.5, size = 15),
axis.text.x= element_text(color = "black"),
axis.text.y= element_text(color = "black"),
axis.line = element_line(colour = "black"),
plot.background = element_rect(fill = "white"),
panel.background = element_rect(fill = "white"))
我试图通过 alpha 的连续变化使第 2 行和第 3 行在 x 轴上出现/消失。虽然线条是在两个值 (0, 1) 之间绘制的,但 alpha 似乎并没有在线条上均匀变化(从 0.01 alpha 开始,0.9 alpha 在值 1)。相反,这些线条几乎立即增长到完整的 0.9 alpha - 为什么会这样,我该如何解决?
解决方案
之所以会出现这种效果,是因为 500 个点通过geom_link2()
向绘图添加了额外的 alpha 链接。
为了说明,我们可以只用 20 个点重复该图,然后这些点变得清晰可见:
ggplot(df, aes(x = Time, y = eyes)) +
ggforce::geom_link2(aes(group = ID, color = cond, alpha = State),
size = 5, n = 20, lineend = "round") +
scale_color_manual(values = c("#CC6666", "#9999CC")) +
scale_alpha_continuous(range = c(0.01, 0.9)) +
scale_shape_manual(values = c(13, 15))
输出:
据我所知,这是ggforce::geom_link()
函数族的一个限制。但是,您可以对这些点进行插值并尝试计算调整后的 alpha 值(例如 alpha ^ 2),该值看起来适合您的数据。
推荐阅读
- perl - “亚里斯多德”一词的由来是什么?
- google-analytics - 我在哪里可以看到 Measurement Protocol 收集的数据的结果?
- chef-infra - 厨师包资源版本属性不起作用
- javascript - Bootstrap 容器块 js 动画背景
- firebase-realtime-database - Cloud Firestore 规则中的字符串函数
- bash - 是否可以将文件分组移动到需要每四个文件更改一次的目录?
- html - One pixel added between block elements in Chrome responsive mode
- javascript - 如何在 UL 标记内的 .each() 函数内循环
- java - RecyclerView Adapter 给出的不能转换为 List<>
- windows - Windows 上的 Docker