我正在使用以下代码绘制条形图:
heights1=c(5,5,4.5,4)
barplot(heights1, main="Language ", names.arg=c("Hindi R/W", "Speak" , "English
R/W","Speak"), ylab=" level ", xlab="Language starting with mostly used",
cex.names=0.8, col=c("darkblue","red"))
输出如下:
但我想要的是“印地语R / W”和“说话”应该结合没有任何差距,然后一个空格来然后“英语R / W”和“说话”应该结合起来我该怎么做呢?
答案 0 :(得分:7)
如果您的数据格式正确,您的生活会更容易。 barplot
函数会输入vector
或matrix
。当输入为matrix
时,R可以使用dimnames
自动为您标记内容。
试试这个:
heights1 = c(5, 5, 4.5, 4)
barplot(t(matrix(heights1, ncol=2, byrow=TRUE,
dimnames=list(c("Hindi", "English"),
c("Read/Write", "Speak")))),
main="Language ", ylab="Level",
xlab="Language starting with mostly used",
col=c("darkblue", "red"),
beside=TRUE, ylim = c(0, 6),
legend.text = TRUE,
args.legend = list(x = "topright"))
如果两组之间的间距太大,那么@Didzis的建议也适用于此。将space = c(0, .2)
添加到barplot
命令中,请记住文档中的详细信息:
如果
height
是矩阵而beside
是TRUE
,则space
可以由两个数字指定,其中第一个是同一组中条形之间的空格,第二是两组之间的空间。如果未明确指定,则默认为c(0,1)
如果height为矩阵,则旁边为TRUE
,否则为0.2
。
答案 1 :(得分:6)
您应该在space=
函数中添加参数barplot()
,其中数字对应于每个条形前的空格。
heights1=c(5,5,4.5,4)
barplot(heights1, main="Language ", names.arg=c("Hindi R/W", "Speak" , "English
R/W","Speak"), ylab=" level ", xlab="Language starting with mostly used",
cex.names=0.8, col=c("darkblue","red"),space=c(0.2,0,0.2,0))