这是一个基本问题,但我找不到答案。我在一个面板中生成了大约 9 个条形图,每个条形图有大约 12 个条形图。我在我的输入中提供了所有 12 个标签,但 R 只命名了备用条。这显然是由于 R 中的一些默认设置需要更改但我找不到它。
问问题
108448 次
4 回答
34
las=2
如果您在plot()
通话中使用,您可能会显示所有标签。此参数和下面提到的其他参数在?par
其中设置绘图设备的图形参数进行了描述。这会将文本旋转 90 度。否则,您将需要使用xaxt="n"
(以抑制刻度和标签),然后通过单独调用axis(1, at= <some numerical vector>, labels=<some character vector>)
.
# midpts <- barplot( ... ) # assign result to named object
axis(1, at = midpts, labels=names(DD), cex.axis=0.7) # shrinks axis labels
另一种方法是首先收集中点,然后使用text()
with xpd
=TRUE 以允许文本出现在绘图区域之外并srt
以某个角度作为文本旋转的命名参数来控制文本旋转的程度:
text(x=midpts, y=-2, names(DD), cex=0.8, srt=45, xpd=TRUE)
需要使用绘图区域中的坐标选择 y 值。
复制一个有用的评论:对于不知道这些参数做什么的未来读者:las=2 将标签逆时针旋转 90 度。此外,如果您需要缩小字体,您可以使用 cex.names=.5 缩小尺寸
于 2012-04-02T18:56:18.860 回答
18
要在基本 R 条形图上获得旋转标签,您可以(就像我在这里所做的那样)调整gridBase包的小插图中给出的示例之一:
library(grid)
library(gridBase)
## Make some data with names long enough that barplot won't print them all
DD <- table(rpois(100, lambda=5))
names(DD) <- paste("long", names(DD), sep="_")
## Plot, but suppress the labels
midpts <- barplot(DD, col=rainbow(20), names.arg="")
## Use grid to add the labels
vps <- baseViewports()
pushViewport(vps$inner, vps$figure, vps$plot)
grid.text(names(DD),
x = unit(midpts, "native"), y=unit(-1, "lines"),
just="right", rot=50)
popViewport(3)
于 2012-04-02T19:23:06.823 回答
8
如果标签太大,R 不会标记每个条形图。
我建议尝试通过将 las=2 参数传递给绘图函数来垂直旋转标签。
如果标签仍然太大,您可以尝试使用 cex.names=.5 参数缩小字体。
绘图的样本数据
sample_curve <- c(2.31,2.34,2.37,2.52,2.69,2.81,2.83,2.85,2.94, 3.03, 3.21, 3.33) # create a sample curve
names(sample_curve)<-c("1 MO","2 MO","3 MO","6 MO","1 YR","2 YR","3 YR","5 YR","7 YR","10 YR","20 YR","30 YR") # label the curve
标签太大的绘图示例
barplot(sample_curve) # labels too big for the plot
带有旋转和小标签的绘图示例
barplot(sample_curve, las=2, cex.names=.5) # lables are rotated and smaller, so they fit
于 2018-12-03T13:44:02.230 回答