我有一个图表,我有几种颜色和几种线型。它们是交叉的,例如虚线为蓝色或绿色。我想要一个使用R中基本绘图的图例,它将是一个正方形/矩形,其中行是颜色,列是行类型。
更新:
借助@G的答案。格洛腾迪克,我已经理解了如何获得两列,但标签仍然没有按照我想要的方式排列。使用这个answer on placing labels to the left,我想出了如何让标签出现在符号的左边(虽然我觉得到达那里是很费力的,应该更简单)。我已经使用了那个答案的存根和我在这里创建这个例子的存根。
set.seed(1)
plot(1:10,runif(min=0,max=10,10),type='l',ylim=c(0,15),xlim=c(0,10),col=1)
lines(1:10,runif(min=0,max=10,10),col=1,lty="dashed")
lines(1:10,runif(min=0,max=10,10),col=2,lty="solid")
lines(1:10,runif(min=0,max=10,10),col=2,lty="dashed")
lines(1:10,runif(min=0,max=10,10),col=3,lty="solid")
lines(1:10,runif(min=0,max=10,10),col=3,lty="dashed")
#draw the legend lines
a <- legend(1,14,lty=rep(ltys, each = (nr)),col=1:3,legend=rep("",6),bty="n", ncol=nc,
trace=TRUE)
#place text labels one value to the left of the legend lines for only the first column
text(a$text$x[1:3]-1,a$text$y[1:3],Vars,pos=2)
#place a text label above the legend lines for the second attribute to define in legend
text(a$text$x[c(1,4)]-1.5, 14, c("Young", "Old"), pos=4)
是否有更简单的东西,或者这是最好的R可以给我的?
答案 0 :(得分:1)
这里第一行是黑色,第二行是红色,第三行是绿色 第一列是实心的,第二列是虚线。
# inputs
Vars <- c("VarA", "VarB", "VarC") # one per row
colors <- 1:3 # one color for each row; should be same length as Vars
ltys <- 1:2 # one lty for each column
plot(0)
nr <- length(Vars)
nc <- length(ltys)
legend("topleft", rep(Vars, nc), col = colors, lty = rep(ltys, each = nr),
ncol = nc, cex = 0.8)