在一个条形图中,我正在尝试插入一个包含长rowname的图例,该图例会被切断。我如何将rowname分成2行呢?
我知道我也可以改变rowname,但希望还有另一种方法。
datab <- c(1,8.7, 19, 16, 13.2, 8.7, 67, 66)
matrix.b <- matrix(datab, nrow=4, ncol=2, byrow=TRUE)
colnames(matrix.b) <- c("Hazelnut", "Caneberry")
rownames(matrix.b) <- c("Parasitism", "Predation", "Undeveloped wasp",
"Undamaged")
par(mar=c(5.1, 4.1, 4.1, 7.1), xpd=TRUE)
barplot(matrix.b, col=heat.colors(length(rownames(matrix.b))), width=2,
cex=1.2, ylab="%", cex.axis=1.2, cex.lab=1.2)
legend("topright",inset=c(-0.5,0),
fill=heat.colors(length(rownames(matrix.b))), legend=rownames(matrix.b))
答案 0 :(得分:0)
如果您不想更改rownames,您可以更改绘图边距或图例的位置。至于前者,以下增加了正确的情节边际
par(mar=c(5.1, 4.1, 4.1, 12), xpd=TRUE)
您还可以拆分图例条目,并在每个单词后添加换行符
# Introduce newline (\n) between words
rownames(matrix.b) <- sapply(rownames(matrix.b), function(x) {
words <- unlist(strsplit(x, " "));
if (length(words) > 1) paste(words, collapse = "\n") else words;
})
# Plot
par(mar=c(5.1, 4.1, 4.1, 12), xpd=TRUE)
barplot(matrix.b, col=heat.colors(length(rownames(matrix.b))), width=2, cex=1.2, ylab="%", cex.axis=1.2, cex.lab=1.2)
legend("topright",inset=c(-0.5,0), fill=heat.colors(length(rownames(matrix.b))), legend=rownames(matrix.b))