R 图的图例名称太长

legend name too long for R graph

在条形图中,我试图插入一个包含长行名的图例,该行名被截断了。 rowname怎么分占2行?

我知道我也可以更改行名,但希望有另一种方法。

    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))

enter image description here

增加地块边距

如果您不想更改行名,您可以更改图边距或图例的位置。至于前者,下面增加右边的plot margin

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))