【问题标题】:How to get tick marks between the bars in R?如何在R中的条之间获取刻度线?
【发布时间】:2014-02-24 20:26:40
【问题描述】:

我想获取消费栏之间的刻度,例如http://hante.home.xs4all.nl/plugwise_dagoverzicht_281009_2.jpg

获取两个日期之间或两次之间的消费更符合逻辑......

但是,我不知道如何在 R 中做到这一点。有人吗?

我确实有这样一个示例表,称为数据:

       date  nombre  delta 
 2014-02-01       0      0 
 2014-02-08     120    120 
 2014-02-15     205     85 
 2014-02-22     280     75 
 2014-02-29     350     70 

到目前为止,我设法写下的代码是:

data$date <- as.POSIXct(data$date, format = "%Y-%m-%d")
data <- data[-2]
barplot(height=data[,2], names=data[,1], las=2)

但“刻度”就在条形下方...正如您在 http://imgur.com/0WE7ouI 上看到的那样。

【问题讨论】:

  • 除非您提供更多上下文,否则可能没有人会提供帮助:您使用什么代码+数据来创建条形图?您是如何尝试创建该轴的,但它是如何工作的?

标签: r graphics graph plot bar-chart


【解决方案1】:

您没有提供任何代码。您的数据如何表示?你是如何绘制条形图的?

如果您使用包latticebarchart(..., horizontal=FALSE),您可以使用参数scales=list(x=list(at=seq_len(numBars+1) - 0.5, labels=yourLabels))) 手动提供新的轴刻度标签,其中numBars 是x 轴上的bin 数。见?barchart

如果你使用更原始的barplot,你可以自己画一个偏移轴:

mids <- barplot(x, axisnames=FALSE)
axis(1, at = mids - (mids[2]-mids[1])/2, labels = yourLabels)

无论哪种方式,显然您可以通过更改偏移符号来向右移动,或者为numBins+1 标签添加两个外部刻度。

编辑:使用您在编辑中添加的代码+数据:

mids <- barplot(height=data[,2], axisnames=FALSE)
axis(1, at = mids - (mids[2]-mids[1])/2, labels = data[,1], las=2)

或例如写下来并添加结束日期:

mstep <- (mids[2] - mids[1]) / 2
axis(1, at=c(mids[1] - mstep, mids + mstep), labels=c(data[,1], endDate), las=2)

【讨论】:

  • 非常感谢您的回答。先验地,我在寻找基本图形,而不是 Lattice 图形。但是,如果我必须更改,因为我的请求不可行,否则我会这样做...稍后我会测试您的答案,然后再回复您。
  • 没问题。 barplot 是基本图形。
  • barplot 是否可以提供与您类似的解决方案?
  • 在您的编辑部分,第一个代码运行良好。第二个不是,正如您在imgur.com/0A9Kk35 上看到的那样:我没有得到最后两个标签。知道为什么吗?
  • 刻度在正确的位置,但最后两个标签似乎丢失了。评估 data[,1]endDatec(data[,1], endDate) 看看出了什么问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 2019-02-22
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多