You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用R基于Bearing和Distance数据绘制符合方向长度要求的矢量图

R语言绘制方位角+长度控制矢量图最优方案

方案选型

使用R语言ggplot2包内置的geom_spoke()函数实现是最优选择,该函数原生支持通过角度、半径(长度)参数直接定义矢量,无需手动换算端点坐标,最终可直接导出SVG、PDF等标准矢量格式,完全匹配需求。

实现步骤

1. 安装加载依赖包

# 未安装则先执行安装
# install.packages("ggplot2")
library(ggplot2)

2. 角度转换

常规Bearing方位角定义为「正北为0°顺时针旋转」,需要先转换为geom_spoke要求的弧度格式(x轴正方向为0°逆时针旋转):

# 示例数据
data1=data.frame(
  species=c("600162", "600006", "600264", "600077", "600265"), 
  Bearing=c(158,47,223,318,71),
  Distance=c(4702,6642,3108,130000,16455)
)

# 角度单位+规则转换
data1$angle <- (90 - data1$Bearing) * pi / 180

如果你的Bearing本身就是x轴正方向为0°逆时针计算的角度,可简化转换逻辑:

data1$angle <- data1$Bearing * pi / 180

3. 绘制矢量图

ggplot(data1, aes(x = 0, y = 0)) + # 所有矢量默认从原点出发,可替换为你的起点坐标列
  geom_spoke(
    aes(angle = angle, radius = Distance/1000, color = species), # 距离除以1000做缩放,避免矢量过长超出画布
    size = 1, 
    arrow = arrow(length = unit(0.3, "cm")) # 添加箭头符合矢量展示要求
  ) +
  coord_fixed() + # 固定坐标轴比例,避免角度变形
  labs(x = "X坐标", y = "Y坐标", color = "物种编号") +
  theme_minimal()

4. 导出矢量格式文件

# 导出为SVG矢量图
ggsave("direction_vector_plot.svg", width = 8, height = 6, dpi = 300)
# 也可导出为PDF矢量图
ggsave("direction_vector_plot.pdf", width = 8, height = 6)

注意事项

  • 距离缩放比例可根据你的数据量级灵活调整,确保矢量长度展示合理
  • 如果需要每个矢量从不同的起点出发,仅需要在aes中将x、y映射为对应数据集里的起点坐标列即可
  • 箭头的大小、线条粗细都可以通过arrow()参数、size参数自定义调整

内容的提问来源于stack exchange,提问作者WEE HIN BOO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:54:05