R语言grid包绘制两矩形间曲线不显示问题求助
R语言grid包grid.curve曲线不显示问题排查
问题原因
- 曲线弯曲方向超出可视范围:
curvature=0.5的正曲率会让左上到右下走向的两个端点的连线向左上方弯曲,而你的端点本身就接近视口顶部,弯曲部分直接超出视口上边界,被默认裁剪规则裁掉。 - 默认线条样式辨识度低:默认线宽较细,即使有少量区域落在可视范围内也不容易观测到。
解决方案
调整曲率为负值让曲线向下弯曲,同时可关闭视口裁剪、设置醒目的线条样式,修改后可运行代码如下:
library(grid) grid.newpage() # 关闭视口裁剪,允许超出视口的内容显示 pushViewport(plotViewport(c(2, 2, 2, 2), clip = "off")) xis <- c(0,0.25) for (i in 1:2) { grid.roundrect(x=unit(xis[i],"npc"), y=unit(1,"npc"), width=1.4*stringWidth("very snug"), height=1.1*unit(2, "line"), just=c("left", "top"), gp=gpar(col="red"), name = paste0("rectangulo",i)) grid.text(paste0("very snug",i),x=xis[i]+0.005, y=unit(0.992,"npc"), just=c("left", "top"),name = paste0("texto",i)) grid.text(paste0("Pedro",i),x=xis[i]+0.005, y=unit(0.95,"npc"), just=c("left", "top"),name = paste0("pedro",i)) } # 调整曲率为负值,设置醒目的线条样式 grid.curve(grobX("texto1", 0)+unit(2,"mm"), grobY("texto1", 0), grobX("rectangulo2", 180), grobY("pedro2", 180), curvature=-0.5, gp = gpar(col = "blue", lwd = 2))
运行后即可看到蓝色弧线正常连接两个目标元素。
内容的提问来源于stack exchange,提问作者PaulS
相关产品推荐
相关产品推荐

