3

在 RI 中,我想制作一些图表,其中我使用彩色线条,如下例所示。也许我可以使用彼此相邻放置的不同线来做到这一点,但问题是很难使用正确的线宽,以便它们完全相邻放置,中间没有任何空白(因为 lwd 参数R 图形包中的行数不是绝对坐标)。是否有任何其他方法可以指定我想用两种或三种(或更多)不同颜色绘制一条线?(理想情况下,角落和线条封顶应该看起来不错)

干杯,汤姆

PS我正在研究的应用程序是能够绘制具有多态状态的系统发育,如下图所示

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

2

根据我从 的帮助中收集到的信息parlwd参数因设备而异。因为x11它声明“由 par(lwd =) 控制的线宽是 1/96 英寸的倍数”。根据定义lwd,我需要将此宽度转换为图形的 x 和 y 单位,以便正确偏移以下行。

所以现在我让你的线条能够转弯 - 仍然需要对线条进行一些调整,以使它们都以相同的长度结束(例如,从系列中的最后一个值中减去偏移量)。

例子:

x <- c(1:10, rep(1, 10))
y <- c(rep(1, 10), 1:10)
lwd <- 20

x11() #lwd is multiples of 1/96 inches (from help info)

plot(y ~ x, t="l", lend=2, ljoin=2, lwd=lwd, col=3, xlim=c(0,11), ylim=c(0,11))

x.units.per.inch <- (par("usr")[2] - par("usr")[1]) / par("pin")[1]
y.units.per.inch <- (par("usr")[4] - par("usr")[3]) / par("pin")[2]

x.offset <- x.units.per.inch * 1/96 * lwd
y.offset <- y.units.per.inch * 1/96 * lwd

lines(x + x.offset, y + y.offset, lend=2, ljoin=2, lwd=lwd, col=2)
lines(x - x.offset, y - y.offset, lend=2, ljoin=2, lwd=lwd, col=4)

在此处输入图像描述

于 2013-06-19T20:37:16.583 回答