【发布时间】:2017-12-15 06:55:38
【问题描述】:
我一直在制作不同的图表集,全部以 R 为基础。我有条形图的问题。我已经格式化了 x 轴以按年份显示日期,但是,很多年会出现多次。我希望每年只出现一次。
这是我的示例代码:
library(quantmod)
start <- as.Date("01/01/2010", "%d/%m/%Y")
#Download FRED data
tickers <- c("WTISPLC", "DCOILBRENTEU")
fred <- lapply(tickers, function(sym) {na.omit(getSymbols(sym, src="FRED", auto.assign=FALSE, return.class = "zoo"))})
df <- do.call(merge, fred)
#Subset for start date
df <- subset(df, index(df)>=start)
#Create bar plot
par(mar = c(5,5,5,5))
barplot(df[,2], names.arg=format(index(df), "%Y"), ann=FALSE, bty="n", tck=-0, col=1:1, border=NA, space=0); title(main="Example chart", ylab="y-axis")
这个例子应该是可重现的并且清楚地表明我的意思。现在,我一直在研究如何添加单独的 x 轴以及如何定义该轴。所以,我尝试添加以下代码:
#Plot bars but without x-axis
barplot(df[,2], names.arg=format(index(df), "%Y"), ann=FALSE, bty="n", tck=-0, xaxt="n", col=1:1, border=NA, space=0); title(main="Example chart", ylab="y-axis")
# Set x-axis parameters
x_min <- min(index(df))
x_max <- max(index(df))
xf="%Y"
#Add x-axis
axis.Date(1, at=seq(as.Date(x_min), x_max, "years"), format=xf, las=1, tck=-0)
这不会给我一条错误消息,但它在绘制 x 轴方面也完全没有任何作用。
请不要为 ggplot 提供解决方案。尽管我喜欢 ggplot,但这些条形图对我来说是一个更大项目的一部分,全部使用 R 基础,我现在不想将 ggplot 引入这个项目。
谢谢!
【问题讨论】:
-
我很难复制你的例子。如果您可以添加当前和预期结果的图像,这也会有所帮助。您是否考虑过在绘制数据之前汇总数据?例如
df2=aggregate(df$DCOILBRENTEU[!is.na(df$DCOILBRENTEU)],by=format(index(df), "%Y")[!is.na(df$DCOILBRENTEU)],sum) -
如果我可以问,您在重现该示例时遇到的确切困难是什么?我添加了实际输出与所需输出的图像。谢谢,阿什利。
-
我可以毫无问题地重现该示例。
-
我在下面添加了一个纯
barplot解决方案。 -
抱歉,我遇到了一些错误,但那是我这边的包的问题。无论如何,感谢您添加图片,这有帮助!