未打印最高值的 y 轴标签

Posted

技术标签:

【中文标题】未打印最高值的 y 轴标签【英文标题】:y-axis label of highest value not printed 【发布时间】:2016-07-30 09:01:10 【问题描述】:

我想绘制对我网站某个网页的每小时访问量。 x 轴显示小时数(0 到 23),y 轴显示唯一访问次数。

我正在抑制 plot() 中的轴,并使用 axis() 添加它们。我只想标记最低和最高的 y 值:

axis(2,
     at = seq(min(...), max(...), 1),
     labels = c(min(...),
                rep.int("", max(...) - min(...) - 1),
                max(...)
               )
    )

(代码示例中的省略号代表该列。我将其省略以使代码结构更清晰。)

但在情节中,最高值的标签没有出现:

有时(取决于值的范围)我可以通过将rep.int("" ... 更改为rep.int(" " 来获得最高值标签,即用空格标记刻度,但这并不总是有效。

为什么 R 不打印最高标签?而且,更重要的是:

如何强制 R 打印最高标签?


完整的代码示例:

sitzungen <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 8, 4, 0, 8, 3, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 2, 0, 0, 2, 0, 0, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 2, 2, 1, 0, 0, 0, 1, 0, 0, 1, 3, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 4, 1, 2, 1, 7, 7, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 3, 8, 4, 1, 2, 0, 1, 1, 0, 0, 5, 0, 3, 3, 2, 3, 1, 2, 0, 1, 2, 0, 0, 0, 1, 0, 1, 2, 3, 0, 0, 3, 1, 6, 3, 9, 1, 0, 2, 1, 4, 8, 2, 2, 2, 0, 0, 0, 2, 1, 3, 1, 1, 2, 1, 2, 3, 1, 4, 3, 0, 2, 3, 1, 3, 1, 5, 2, 0, 0, 1, 0, 1, 2, 1, 0, 3, 0, 1, 0, 3, 7, 2, 2, 1, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 15, 2, 2, 1, 0, 0, 0, 0, 0, 2, 3, 0, 3, 0, 2, 1, 1, 2, 2, 4, 2, 1, 4, 2, 1, 2, 2, 1, 0, 0, 0, 7, 0, 2, 4, 2, 0, 2, 3, 5, 2, 1, 4, 4, 2, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 2, 1, 2, 1, 1, 2, 1, 4, 1, 1, 1, 0, 0, 3, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
stunde <- rep(0:23, 20)
stuendlich <- data.frame(cbind(stunde, sitzungen))
aggr <- aggregate(sitzungen ~ stunde, stuendlich, sum)
aggr <- rbind(aggr, c(24, aggr[which(aggr$stunde == "23"),]$sitzungen))
plot(aggr, type = "s", xlim = c(0, 24), axes = FALSE, xlab = "Stunde", ylab = "Sitzungen", main = "Sitzungen pro Stunde (kumuliert)")
axis(1, at = seq(0.5, 23.5, 1), labels = 0:23)
axis(2, at = seq(min(aggr$sitzungen), max(aggr$sitzungen), 1), labels = c(min(aggr$sitzungen), rep.int(" ", max(aggr$sitzungen) - min(aggr$sitzungen) - 1), max(aggr$sitzungen)))

【问题讨论】:

【参考方案1】:

不要使用" """;使用NA:

axis(2, at = seq(min(aggr$sitzungen), max(aggr$sitzungen), 1),
     labels = c(min(aggr$sitzungen),
              rep.int(NA, max(aggr$sitzungen) - min(aggr$sitzungen) - 1),
              max(aggr$sitzungen)))

【讨论】:

太棒了!谢谢:-)

以上是关于未打印最高值的 y 轴标签的主要内容,如果未能解决你的问题,请参考以下文章

打印 y 轴标题,数字提升到 10 次方和实数乘法符号

抑制绘图子图中的y轴标签,注释未对齐

两行带有嵌套 x 变量的轴标签(年份低于月份)

TSC条码打印机出现问题。在我打印标签时,碳带也会跟着标签一起出来。这是怎么回事?

打印有效数字

matplotlib:在堆叠散点图中对齐 y 轴标签