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))
在条形图中,我试图插入一个包含长行名的图例,该行名被截断了。 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))