相关疑难解决方法(0)

如何在ggplot2中绘制一个漂亮的箭头

我正在创建一个ggplot图表,我希望在两点之间有一些箭头.主要任务很容易完成geom_line(arrow = arrow()).但是,我想要一些"漂亮"的粗箭.调整箭头的大小size=没有用,因为它完全弄乱了箭头.我说明了我的问题:

创建一些示例数据和图:

 NAME <- c("A", "A", "B", "B", "C", "C")
 YEAR <- c(2016, 2011, 2016, 2011, 2016, 2011)
 YEAR <- as.factor(YEAR)
 VALUE <- c(1, 4, 1, 5, 2, 8)
 DATA <- data.frame(NAME, YEAR, VALUE)

ggplot(DATA, aes(x=VALUE, y=NAME)) + 
  geom_point(size=5, aes(colour=YEAR)) +
  geom_line(arrow = arrow(length=unit(0.30,"cm"), ends="first", type = "closed"))
Run Code Online (Sandbox Code Playgroud)

结果图看起来像这样:

plot1

现在我试图"加厚"箭头......

ggplot(DATA, aes(x=VALUE, y=NAME)) + 
  geom_point(size=5, aes(colour=YEAR)) +
  geom_line(arrow = arrow(length=unit(0.30,"cm"), ends="first", type = "closed"), size = 3)
Run Code Online (Sandbox Code Playgroud)

这是这里显示的结果:

plot2

我的问题:有没有办法绘制一些"美丽的"粗箭?

r arrows ggplot2

24
推荐指数
3
解决办法
3万
查看次数

在R中为网格箭头指定gpar设置

我正在开发一个比例大小的箭头图,并且有一个尺寸,方向和箭头尺寸的工作流程,但箭头有几个问题:1.它们有圆形连线和2.它们不是' t关闭(见右下角)即使type='closed'.

require(ggplot2)
require(grid)
d = data.frame(x = 1:10, y = 0, size = 1:10)

ggplot(d, aes(x, y, size = size)) +
  geom_segment(aes(xend = x, yend = y + size), 
               arrow = arrow(length = unit(d$size, "mm"), type='closed')) +
  scale_size(range = c(2, 4))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

箭头基于网格图形,但我无法弄清楚如何指定设置. get.gpar()收益率:

$lineend
[1] "round"

$linejoin
[1] "round"
Run Code Online (Sandbox Code Playgroud)

gpar(linejoin = 'mitre', lineend = 'butt')不会改变这一点.有没有办法改变这些设置?提前致谢.


编辑

绘制的图片包括grid.segments箭头添加:

在此输入图像描述

r ggplot2

8
推荐指数
1
解决办法
1905
查看次数

标签 统计

ggplot2 ×2

r ×2

arrows ×1