7

我使用 barplot() 函数从矩阵创建堆积图。

矩阵看起来像这样:

1 0.989013 0.010987
2 0.999990 0.000010
3 0.999990 0.000010
4 0.999990 0.000010

创建堆叠图表的代码如下所示:

barplot(t(as.matrix(x)), col=c("cyan", "black"))

问题是我想在某些点创建带有刻度和标签的自定义 x 轴。我使用以下方法创建 x 轴:

axis(1, at=keyindexes, labels=unique(t$V4), tck=-0.01)

其中 keyindexes 是我需要有刻度的条形编号向量,而 unique(t$V4) 是包含每个刻度的唯一名称的向量。

现在的问题是 x 轴与图表区域不匹配并且明显更短。任何人都可以建议如何使 x 轴更长?

4

2 回答 2

19

轴标签的问题实际上是条形不是以整数为中心的。例如,制作一些有 10 行的数据并用barplot(). 然后axis()在从 1 到 10 的数字处添加 x 轴。

set.seed(1)
x<-data.frame(v1=rnorm(10),v2=rnorm(10))
barplot(t(as.matrix(x)), col=c("cyan", "black"))
axis(1,at=1:10)

在此处输入图像描述

现在轴文本不在正确的位置。

为了纠正这个问题,barplot()应该保存为对象,并且这个对象应该用作at=轴中的值。

m<-barplot(t(as.matrix(x)), col=c("cyan", "black"))
m
 [1]  0.7  1.9  3.1  4.3  5.5  6.7  7.9  9.1 10.3 11.5
axis(1, at=m,labels=1:10)

在此处输入图像描述

编辑 - 仅绘制一些刻度

如果只应绘制一些轴刻度文本,那么您可以m对所需的值进行子集化,并提供相同长度的labels=. 在此示例中,仅注释了 1.、5. 和 10. 条。

m<-barplot(t(as.matrix(x)), col=c("cyan", "black"))
lab<-c("A","B","C")
axis(1, at=m[c(1,5,10)],labels=lab)

在此处输入图像描述

于 2013-03-11T06:02:22.213 回答
0

查看updateusrTeachingDemos 包中的函数。此功能将更改或“更新”绘图的用户坐标。该示例显示了更改条形图的 x 轴坐标以匹配附加绘图的直观值。

于 2013-03-12T01:28:23.100 回答