Легенда в круговой диаграмме не отображается правильно - PullRequest
0 голосов
/ 04 ноября 2019

Я хотел бы переместить мою круговую диаграмму влево, потому что легенда слишком близка, и поэтому она сокращает слова в моей легенде (Micro-mammifères), но я не знаю, как это сделать. У меня также есть процентные значения, которые перекрываются, и я хотел бы иметь возможность прочитать их правильно. Я попытался увеличить радиус, но это не сработало, и легенда исчезла.

slices <- c(62,6,1,0.5,13,1,0.4,14,0.1,2)
pct <- c(62,6,1,0.5,13,1,0.4,14,0.1,2)
lbls <- paste(pct,"%",sep=" ")
lgd <- c("Elan", "Renne","Castor", "Chevreuil", "Lièvre", "Renard", "Sanglier","Porc", "Mustélidés", "Micromammifères")
cols = brewer.pal(n = length(slices), name = 'Set3')

pie(slices,labels = lbls, col=cols)
legend(1.1,0.6,legend=lgd,cex=0.9, bty = "n", fill = cols)

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Круговые диаграммы не рекомендуется использовать в базе R (см. Страницу руководства? Pie), поэтому они не содержат ряд полезных опций. Мы можем приблизиться к тому, что вы хотите, уменьшив размер меток, удалив знак процента и изменив размер окна графика. Я просто включил измененный код:

pct <- c("62", "6", "1", ".5", "13", "1", ".4", "14", ".1", "2")
dev.new(width=10, height=8)
pie(slices, labels=pct, col=cols, cex=.75)
title(xlab="Percentage of Total", line=0)
legend("topright", legend=lgd, bty="n", fill=cols)

Есть несколько других реализаций круговых диаграмм в plotrix и ggplot, которые могут приблизить вас к тому, что вы хотите.

Pie Chart

0 голосов
/ 04 ноября 2019

Основная проблема с функцией pie() заключается в том, что она всегда строит круговую диаграмму в середине области графика. Вы можете сделать область прямоугольной, как @dcarlson, чтобы оставить пространство по краям, но у вас будет большой пробел слева.

Чтобы избежать этого, вы можете использовать функцию layout() для разделенияучасток сюжета на две части, и поместите пирог в левую часть. Например,

dev.new(width=10, height=6)
layout(matrix(1:2, nrow=1), widths = c(1,0.666))
pie(slices,labels = lbls, col=cols)
plot.new()
legend("center",legend=lgd,cex=0.9, bty = "n", fill = cols)

Это дает график, который все еще имеет слишком много пробелов на мой вкус, но по крайней мере он сбалансирован:

screenshot

Вы можете попробовать поиграть с размерами, чтобы улучшить внешний вид. Вы также можете настроить поля, например, par(mar = c(0,0,0,0)) уменьшает все поля до нуля.

...