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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:42:01