r - 时间序列的ggplot条形图

标签 r ggplot2

我正在阅读 Hadley Wickham 撰写的关于 ggplot 的书,但我无法在条形图中随时间绘制某些权重。这是示例数据:

dates <- c("20040101","20050101","20060101")
dates.f <- strptime(dates,format="%Y%m%d")

m <- rbind(c(0.2,0.5,0.15,0.1,0.05),c(0.5,0.1,0.1,0.2,0.1),c(0.2,0.2,0.2,0.2,0.2))
m <- cbind(dates.f,as.data.frame(m))

这个 data.frame 在第一列中有日期,每一行都有相应的权重。我想使用“fill”参数在条形图中绘制每年的权重。

我可以使用以下方法将权重绘制为条形:
p <- ggplot(m,aes(dates.f))
p+geom_bar()

然而,这并不是我想要的。我想在每个条形图中看到每个权重的贡献。此外,我不明白为什么我在 x 轴上有奇怪的格式,即为什么显示“2004-07”和“2005-07”。

谢谢您的帮助

最佳答案

希望这是您正在寻找的:
ggplot2需要长格式的数据。

require(reshape2)
m_molten <- melt(m, "dates.f")

绘图本身是由
ggplot(m_molten, aes(x=dates.f, y=value, fill=variable)) + 
  geom_bar(stat="identity")

enter image description here

您可以添加 position="dodge"geom_bar如果你想然后并排。

编辑

如果您只想每年休息:转换 m_molten$dates.f迄今为止。
require(scales)
m_molten$dates.f <- as.Date(m_molten$dates.f)

ggplot(m_molten, aes(x=dates.f, y=value, fill=variable)) + 
  geom_bar(stat="identity") + 
  scale_x_date(labels = date_format("%y"), breaks = date_breaks("year"))

P.S.:见 http://vita.had.co.nz/papers/tidy-data.pdf哈德利的整洁数据哲学。

关于r - 时间序列的ggplot条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28557393/

相关文章:

read.xlsx 和 colClasses

r - 确定 R 中的类类型(S3 与 S4)

R等于bash的-x集合;回显正在执行的所有命令?

r - Annotation_raster 不适用于 scale_x_reverse

r - 在ggplot2中为每个facet_wrap网格放置一个图例

r - 在 R 中使用 for 循环将多个图像(3D 数组)存储到 4D 数组中

r - knitr:如何相邻显示两个不同大小的图?

r - 在 R 中绘制图形 G=(V,E)

r - 更改 ggplot2 bar_plot(风车图)中条形的形状

r - 缺少 ggplot2 和 geom_line 的图例