如何修复基本R barplot中丢失的标签

问题描述 投票:0回答:2

嗨,我试图绘制一个工作人员数量的小图,但是x轴上的某些标签丢失了。如何解决此问题

> dput(dat)
structure(list(Name = c("John", "Jacky", "Jill", "Sam", "Arthur", 
"Aaron", "Jacob", "Joseph", "Martin", "Alan", "Albert", "Clare", 
"Frederick", "Florence", "David", "George", "Michael", "Doughlas", 
"Andrew", "Brian"), Clinc = c("DMMTC", "DMMTC", "DMMTC", "DMMTC", 
"CKDMTC", "CKDMTC", "CKDMTC", "CKDMTC", "Warfarin MTC", "Warfarin MTC", 
"Warfarin MTC", "Warfarin MTC", "Respiratory MTC", "Respiratory MTC", 
"QSC", "QSC", "QSC", "Pain MTC", "Pain MTC", "Pain MTC")), row.names = c(NA, 
-20L), class = c("tbl_df", "tbl", "data.frame"))

summary(dat)

head(dat)


counts <- table(dat$Clinc)
barplot(counts, main="Placements",
        xlab="number of staffs",)
r label bar-chart
2个回答
1
投票

Anandapadmanathan,这对绘图窗口的实际大小很敏感。如果将其扩展为更大的尺寸,则应该看到所有标签。有些可能由于重叠的文本框而被隐藏。例如,这是您的代码,但绘图范围更大。

barplot

[不幸的是,尽管我不知道为什么一个或多个名称从您的地块中“丢失”,但是您可以随意添加标签。

[首先,您是否知道barplot返回每个小节中心的X值?奇怪的是,它们不是整数:

bp <- barplot(counts, main="Placements", xlab="number of staffs")
bp
#      [,1]
# [1,]  0.7
# [2,]  1.9
# [3,]  3.1
# [4,]  4.3
# [5,]  5.5
# [6,]  6.7

我们可以使用它们来放置某些文本手动

从过于狭窄的情节开始:

# left, unchanged
bp <- barplot(counts, main="Placements", xlab="number of staffs")

我们可以手动添加一些文本。为此,请知道xpd=NA允许我们将文本(和点)放置在常规绘图窗口之外。而且,adj=是“ x对齐”和“ y对齐”的向量,其中0.5居中,在这种情况下,-4是“突降大约4个高度”。您需要玩这个游戏才能达到您想要的效果。 (有关?par的帮助,请参见?par;有关xpd的帮助,请参见?text。)

?text

最后,由于我们现在可以看到省略了第二和第五个标签,因此我们可以定位这些标签。

adj

# middle, just for testing bp <- barplot(counts, main="Placements", xlab="number of staffs") text(bp, 0, names(counts), xpd = NA, adj = c(0.5, 4), col = "red")

完美吗?不,美丽吗?也许不是。但是,这使您可以重新获得丢失的东西。 (我个人认为,交替使用x标签的高度可能是一件好事,尤其是当其中一些标签的宽度超出所需宽度时。)


0
投票

这里还有四种其他方法来处理未显示的标签:

  1. 使标签文本变小:

    # right, fixed
    bp <- barplot(counts, main="Placements", xlab="number of staffs")
    text(bp[c(2,5)], 0, names(counts)[c(2,5)], xpd = NA, adj = c(0.5, 4), col = "red")
    
  2. 更改绘图窗口的大小:

    three barplots side by side
  3. 通过增加左边距使用水平条形图:

    barplot(counts, main="Placements", xlab="number of staffs", cex.names=.7)
    
  4. 增加下边距并以一定角度绘制文本:

    dev.new(width=10, height=6)
    barplot(counts, main="Placements", xlab="number of staffs")
    
© www.soinside.com 2019 - 2024. All rights reserved.