在R中自定义图表

3
  1. 我有以下用于绘制图表的代码:

    barplot(as.vector(t(mat1[1,3:ncol(mat1)])),las=2)

    我想要修改这段代码,使得 x 轴被替换为直线 y = 2;实际上将 x 轴向上移动 2 个单位,如下图所示。

    enter image description here

    我需要柱形图从 2 开始,以便:

    • 值为 3 的柱形图从 y=2 线开始 上升,以 y=3 结束。
    • 值为 0 的柱形图从 y=2 线开始 下降,以 y=0 结束。
  2. 如何将 mat1 的列名作为我的 x 轴类别?


1
要将x轴标签更改为mat1的列名,请在barplot中使用names.arg参数(例如names.arg=colnames(mat1)[3:ncol(mat1)])。至于您的第一个问题,当horiz=FALSE时,barplot通常不会绘制x轴,这是默认设置。您想绘制x轴,还是希望条形图的条形从2开始而不是从0开始? - BenBarnes
@BenBarnes 我想让条形图从2开始上升或下降到它们的值,即条形图以y=2为中心。 - user1202664
2个回答

7

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)

enter image description here


1

这是来自?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)

enter image description here

很抱歉如果这并没有回答你的具体问题,但是我没有任何样本数据可以使用,所以我采用了?barplot的例子。


几乎了。y=5以下的条形图是错误的;它们应该从y=5开始,向下到第一和第二个为~3,等等。 - user1202664
@user1202664,如果没有一些样本数据,我很难理解您的具体需求。条形图的放置与数据结构有关。尝试使用barplot((tN-7), space = 1.5, axisnames=FALSE)来了解我所说的“数据结构”。 - Eric Fail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接