改变R

时间:2015-09-12 20:10:02

标签: r bar-chart legend

我是R的新手,所以我在这里苦苦挣扎,但我没有找到问题的答案。

我正在尝试在R中生成一个简单的条形图,并且我使用las=2将我的x轴变量标签设置为垂直。然后,我使用par(mar=c(20,15,5,3))par(mgp=c(6,1,0))更改了条形图的边距,以便标签不会与xlab标签重叠。

我想为此添加一个图例,但是我已经采用了图表本身的边距尺寸,因此它看起来太大而且不合适。我尝试使用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
)

我非常感谢你的帮助,谢谢。

2 个答案:

答案 0 :(得分:2)

您还可以使用legend函数的参数:y.interspx.intersptext.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

答案 1 :(得分:0)

我不知道我是否正确理解了您的问题,但也许您可以尝试x.intersp或y.intersp来修改图例的x和y轴的间距。例如,您可以添加x.intersp = 0.5以使图例中的元素更接近x轴。

如果这不起作用且您提供了屏幕截图,也许我可以尝试更好地帮助您。