X轴与条形图不匹配

YKY*_*YKY 6 plot r

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

Matrix看起来像这样:

1 0.989013 0.010987
2 0.999990 0.000010
3 0.999990 0.000010
4 0.999990 0.000010
Run Code Online (Sandbox Code Playgroud)

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

barplot(t(as.matrix(x)), col=c("cyan", "black"))
Run Code Online (Sandbox Code Playgroud)

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

axis(1, at=keyindexes, labels=unique(t$V4), tck=-0.01)
Run Code Online (Sandbox Code Playgroud)

其中keyindexes是条形码的向量,其中我需要有标记和唯一(t $ V4)是包含每个标记的唯一名称的向量.

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

Did*_*rts 17

轴标签的问题实际上是条形不以整数为中心.例如,制作一些包含十行的数据并将其绘制成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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

要更正此问题,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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

编辑 - 仅绘制一些刻度

如果只应绘制一些轴刻度文本,那么您可以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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述