嗨,我试图绘制一个工作人员数量的小图,但是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",)
答案 0 :(得分:1)
Anandapadmanathan,这对绘图窗口的实际大小很敏感。如果将其扩展为更大的尺寸,则应该看到所有标签。有些可能由于重叠的文本框而被隐藏。例如,这是您的代码,但绘图窗口更大。
不幸的是,尽管我不知道为什么一个或多个名称会从您的地块中“丢失”,但您仍然可以随意添加标签。
首先,您是否知道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个高度”。您需要玩这个游戏才能达到您想要的效果。 (有关xpd
的帮助,请参见?par
;有关adj
的帮助,请参见?text
。)
# 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")
最后,由于我们现在可以看到省略了第2和第5个标签,因此我们可以定位这些标签。
# 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")
完美吗?不,美丽吗?也许不是。但是,这使您可以重新获得丢失的东西。 (我个人认为,交替使用x标签的高度可能是一件好事,尤其是当其中一些标签的宽度超出所需宽度时。)
答案 1 :(得分:0)
还有其他四种方法来处理未显示的标签:
减小标签文本:
{global.myBoolean && <p>Show me if true</p>}
更改绘图窗口的大小:
return (
{global.myBoolean && (
<p>Show me if true</p>
)}
)
通过增加左边距来使用水平条形图:
barplot(counts, main="Placements", xlab="number of staffs", cex.names=.7)
增加底部边距并以一定角度绘制文本:
dev.new(width=10, height=6)
barplot(counts, main="Placements", xlab="number of staffs")