название легенды слишком длинное для графика R

В гистограмму я пытаюсь вставить легенду, включающую длинное имя строки, которое обрезается. Как бы я разделил имя строки, чтобы занять 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))

введите здесь описание изображения


person David L    schedule 22.10.2017    source источник


Ответы (1)


Увеличить границу участка

Если вы не хотите менять имена строк, вы можете либо изменить поля графика, либо положение легенды. Что касается первого, следующее увеличивает правый край графика

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

введите здесь описание изображения

person Maurits Evers    schedule 22.10.2017