r - 在 geom_segment() 或 geom_link() 生成的多个箭头上应用渐变颜色
问题描述
我想画几个箭头,它们表示在坐标系中原点位于 (0,0) 的向量。这是数据(arrow
):
x1 y1 x2 y2
1 0 0 0.03547301 -0.122964349
2 0 0 0.10231616 0.467737581
3 0 0 0.07178671 0.009871989
4 0 0 0.08409951 0.005768529
5 0 0 0.07555414 0.311021699
6 0 0 -0.01020843 -0.024377519
7 0 0 0.04818488 -0.016939487
8 0 0 -0.07599210 -0.182464675
9 0 0 0.21804318 -0.159189789
10 0 0 0.10697846 -0.070381673
11 0 0 -0.09771545 -0.082626031
12 0 0 0.03568008 -0.047201735
13 0 0 0.08981450 -0.232150118
14 0 0 0.08084139 0.010385412
15 0 0 0.26188552 0.425836906
16 0 0 -0.91098873 -0.180781148
17 0 0 0.03733511 0.036019056
18 0 0 -0.02595595 -0.046080818
19 0 0 0.09674545 0.063773405
20 0 0 0.05841455 0.139450807
21 0 0 0.04352579 0.065334522
22 0 0 0.02618533 0.111700777
23 0 0 0.02068825 -0.054461573
24 0 0 -0.01325943 0.073912948
简而言之,我想绘制 24 个箭头,并根据它们在 x 轴上的绝对长度为它们着色。但是,我不确定我做错了哪一部分,所有箭头仍然是黑色的。以下是我的代码:
p <- ggplot(data = arrows, aes(x = x1, y = y1, xend = x2, yend = y2), color=abs(x2)) +
geom_link(arrow = grid::arrow(length = grid::unit(0.2, 'cm')))
p + ggpubr::gradient_color(c("#00AFBB", "#E7B800", "#FC4E07"))
谢谢您的帮助!
解决方案
看起来您需要将颜色参数放在 aes() 中
library(ggforce)
library(ggpubr)
arrows <- data.frame(
stringsAsFactors = FALSE,
x1 = rep(c(0), 4),
y1 = rep(c(0), 4),
x2 = c(0.03547301, 0.10231616, 0.10231616, 0.08409951
),
y2 = c(-0.122964349, 0.467737581, 0.009871989, 0.005768529)
)
p <- ggplot(data = arrows, aes(x = x1, y = y1, xend = x2, yend = y2, color=abs(x2))) +
geom_link(arrow = grid::arrow(length = grid::unit(0.2, 'cm')))
p + ggpubr::gradient_color(c("#00AFBB", "#E7B800", "#FC4E07"))
推荐阅读
- visual-studio-code - vscode 的 Astyle 格式:扩展没有配置文件
- excel - 在 Excel 中组合附加到同一变量的多个值
- javascript - 事件委托 - 检索 DOM 元素是其属性的类的实例
- kubernetes - Kubernetes - 使用特定的 ConfigMap 版本控制
- c# - Asp .net core 更改密码需要重新启动应用程序
- android-asynctask - 在 asynctask 类中使用 edittext 值
- python - TKinter - 尝试销毁按钮时出现 AttributeError
- image - 使用 Reportlab 在 PDF 中添加图像后旋转图像
- python - Numpy:随机播放元素的子集
- magento - 无法登录和使用管理员 magento 1.9