2015-09-12 2 views
1

Я очень новичок в R, поэтому я немного борюсь с этим, и я не нашел ответа на свою проблему.Изменение полей легенды в R

Я пытаюсь создать простую штриховую диаграмму в R, и я установил свои переменные метки оси x как вертикальные, используя las=2. Затем я изменил поля для планшета так, чтобы метки не перекрывали метку xlab, используя par(mar=c(20,15,5,3)) и par(mgp=c(6,1,0)).

Я хотел бы добавить к этому легенду, но тот, который у меня есть, принял размеры поля самого графа, так что он кажется слишком большим и не подходит. Я пробовал использовать cex, но это влияет только на текст в легенде. Есть ли в любом случае для меня изменение полей легенды (или полей графика) независимо?

Вот что я закодированы:

par(mar=c(20,15,5,3)) par(mgp=c(6,1,0)) par(xpd=TRUE) barplot(names.arg=c("Africa", "Central America, South America, Caribbean", "Middle East", "Central and Eastern Europe", "South and East Asia"), cex.names=0.8, las=2, t(YLL), ylab="Percentage (%)", ylim=c(0,100), main="", beside=TRUE, col= c("green4", "orange"),xlab="Regions", mar=c(20,15,5,3))

legend(10, 100, legend=c("Communicable diseases", "Communicable diseases"), fill= c("green4", "orange"),cex=0.7)

Я действительно будет признателен за помощь, спасибо.

ответ

0

Я не знаю, правильно ли я понял вашу проблему, но, возможно, вы можете попробовать x.intersp или y.intersp изменить интервал по оси x и y вашей легенды. Например, вы можете добавить x.intersp = 0.5, чтобы приблизить элементы вашей легенды по оси x.

Если это не работает, и вы предоставляете скриншот, возможно, я попытаюсь помочь вам лучше.

+0

Привет там, проблема не позиция легенда, но граница (интервал) si ze вокруг легенды. Это слишком велико для графика, потому что я изменил размеры полей графика, чтобы компенсировать метки оси x, перекрывающие метку xlab. Я хотел поставить изображение графика вверх, но мне не разрешено это делать. – twekye

+0

Так странно ... что со мной никогда не случалось. «Разделение вокруг легенды» означает, что вокруг текста вашей легенды много белого пространства? Возможно, вы можете удалить фон и границу легенды с помощью bty = "n", таким образом, не имеет значения, имеет ли легенда большие поля. Еще одна вещь, о которой я могу думать, заключается в том, что, возможно, вам не нужно менять поля так сильно, чтобы ваши метки не перекрывались. Вы можете ввести перерывы в тексте, например «Центральная Америка, \ Южная Америка, \ n Карибский» , поэтому он будет записан в три строки и не будет перекрываться с меткой x. – Marianela

+0

Спасибо. Я попробую это сейчас. – twekye

2

Вы также можете использовать аргументы функции legend: y.intersp, x.intersp и text.width для уменьшения размера легенды.

Вот пример:

set.seed(55) # Set the seed of R‘s random number generator 
x <- 1:10 
y <- runif(10, min=0, max=100) # Generating random numbers 
z <- runif(10, min=0, max=100) # Generating random numbers 
plot(x,y, type="l", ylim=c(0,100), ylab="y and z") 
par(new=TRUE) 
plot(x,z, type="l", col="red", ylim=c(0,100), ylab=NA, xaxt='n', yaxt='n') 
legend("topright", c("y","z"), lty="solid", col=c("black", "red")) 

before

И тот же код модифицирования legend функции:

set.seed(55) # Set the seed of R‘s random number generator 
x <- 1:10 
y <- runif(10, min=0, max=100) # Generating random numbers 
z <- runif(10, min=0, max=100) # Generating random numbers 
plot(x,y, type="l", ylim=c(0,100), ylab="y and z") 
par(new=TRUE) 
plot(x,z, type="l", col="red", ylim=c(0,100), ylab=NA, xaxt='n', yaxt='n') 
legend("topright", c("y","z"), lty="solid", col=c("black", "red"), y.intersp=0.5,x.intersp=0.5,text.width=0.1) 

after

Смежные вопросы