我不能说这是您问题的完整解决方案,但至少它可以是一个开始。
ggplot(d, aes(x = long, y = lat, size = size)) +
geom_segment(aes(xend = long + delta_long, yend = lat + delta_lat),
arrow = arrow(length = unit(0.7, "cm"))) +
scale_size(range = c(1, 2))
我的改变很小:更大的箭头和尺寸比例。如果您旨在避免过度绘图,则尺寸比例的上限是最重要的。
从现在开始,只保留箭头可能是个好主意,因为当尺寸小时,线条不可见。这是一个肮脏的黑客:
ggplot(d, aes(x = long, y = lat, size = size)) +
geom_segment(aes(xend = long + delta_long/100, yend = lat + delta_lat/100),
arrow = arrow(length = unit(0.7,"cm"))) +
scale_size(range = c(1, 2))
当然,大小值之间保持适当的视觉关系至关重要!否则,你的情节可能会产生误导。但这取决于数据,所以我无法给你进一步的建议。抱歉,如果这是一个显而易见的观点。
UPD:事实证明,unit() 函数是矢量化的,所以它可以解决问题!
ggplot(d, aes(x = long, y = lat, size = size)) +
geom_segment(aes(xend = long + delta_long/100, yend = lat + delta_lat/100),
arrow = arrow(length = unit(d$size * 5,"cm"))) +
scale_size(range = c(1, 2))