增加数字边际以包括长标签

时间:2017-10-08 14:35:20

标签: r plot

基本上,我想确保x轴上的所有标签都不重叠,并且图形边距足以看到垂直标签。

par(mar=c(180, 70, 2, 2.1)) 
oldfont <- par(font=3) 
table(new$Tag)
barplot(table(new$Tag),x,las=2,cex.lab=100)

请在此处找到酒吧情节图片!

enter image description here

1 个答案:

答案 0 :(得分:1)

您是否正在寻找的不仅仅是改变边距,文字大小等等? 通过删除单个计数和截断名称可以提高可读性。

set.seed(1)

words <- sapply(
  sample(3:25, 50, replace=TRUE), 
  function(x) {
      paste(sample(c(letters), x, replace=TRUE), collapse="")
      }
)

strtrunc <- function(x, l, r="…") {
    trunc <- nchar(x) > l
    x[trunc] <- paste0(strtrim(x[trunc], l), r)
    x
}


samp <- sample(1:50, 500, replace=TRUE)
samp.t <- round(1.2^table(samp))
samp.t[sample(1:50, 20)] <- 1
names(samp.t) <- words

dev.new(width=10, height=5)
par(mar=c(10, 4, 3, 0.5), mgp=c(0, 0.8, -0.5), cex=0.9)
b <- barplot(samp.t, xaxt="n", space=0.5, col=1)
axis(1, at=b, labels=names(samp.t), las=2, tick=FALSE, cex.axis=0.8)
mtext("All counts", line=1, cex=1.5)

#barplot with logarithmic y-axis, truncated names and no single-counts
samp.ts <- samp.t[samp.t != 1]
names(samp.ts) <- strtrunc(names(samp.ts), 15)

dev.new(width=10, height=5)
par(mar=c(10, 4, 3, 0.5), mgp=c(0, 0.8, -0.5), cex=0.9)
b <- barplot(samp.ts, xaxt="n", space=0.5, col=1, log="y")
axis(1, at=b, labels=names(samp.ts), las=2, tick=FALSE, cex.axis=1.2)
mtext("Counts > 1", line=1, cex=1.5)

enter image description here enter image description here

超过20个左右命名类别的条形图通常不能很好地工作,您可能最好找到一种可视化数据的不同方法。如果对数据有意义,可以选择直方图或密度图。否则,将条形图划分为较小的部分,可能是合理的团体,可能是另一个。