我有以下用于绘制图表的代码:
barplot(as.vector(t(mat1[1,3:ncol(mat1)])),las=2)
我想要修改这段代码,使得 x 轴被替换为直线 y = 2;实际上将 x 轴向上移动 2 个单位,如下图所示。
我需要柱形图从 2 开始,以便:
- 值为 3 的柱形图从 y=2 线开始 上升,以 y=3 结束。
- 值为 0 的柱形图从 y=2 线开始 下降,以 y=0 结束。
如何将
mat1
的列名作为我的 x 轴类别?
Barplot总是从0开始绘制其条形图。将每个y值减去2(或者像我一样减去5)。将ylim设置为range(y-values - 5)。您需要使用yaxt="n"来禁止绘制y轴。axis的xpd参数允许标签范围扩展到实际值范围以下。
set.seed(231)
tN <- table(Ni <- stats::rpois(100, lambda=5))
tNshift <- tN-5
barplot(tNshift, space = 1.5, yaxt="n", xaxt="n", ylim=range(tNshift))
abline(0,0)
axis(2, at= c(-5, pretty(tNshift)), labels=c(0, pretty(tNshift)+5), xpd=TRUE)
这是来自?barplot
的第一个示例,稍作修改,并添加了abline(x,y)
require(grDevices) # for colours
tN <- table(Ni <- stats::rpois(100, lambda=5))
barplot(tN, space = 1.5, axisnames=FALSE)
abline(5,0)
很抱歉如果这并没有回答你的具体问题,但是我没有任何样本数据可以使用,所以我采用了?barplot
的例子。
barplot((tN-7), space = 1.5, axisnames=FALSE)
来了解我所说的“数据结构”。 - Eric Fail
mat1
的列名,请在barplot
中使用names.arg
参数(例如names.arg=colnames(mat1)[3:ncol(mat1)]
)。至于您的第一个问题,当horiz=FALSE
时,barplot
通常不会绘制x轴,这是默认设置。您想绘制x轴,还是希望条形图的条形从2开始而不是从0开始? - BenBarnes