我使用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轴更长?

最佳答案

轴标签的问题实际上是条形图没有以整数为中心。
例如,使用十行制作一些数据,并使用barplot()对其进行绘制。然后为x轴从1到10的数字添加axis()

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)

关于r - X轴与条形图不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15331472/

10-13 05:23