如何在R中以水平堆积条形图的样式创建时间序列图

朱利普

我想创建一个水平的“堆积条形”类型图,其中日期沿x轴运行,而我的样本在y轴上显示为条形。在下面的简单示例中,我有三个样本(a,b,c),每个样本都包含三个值(0、1、2)。我希望根据沿x轴每个时间步长的值对水平条进行着色,以便最终得到从我的第一个时间点到最后一个时间点延伸的三个水平条(每个样本一个),并包含一个与不同值相关的颜色的一系列块。

例如,假设我希望值0为蓝色,值1为黄色,值2为红色:对于样品a,迹线的前两天将是蓝色,然后第二天将是黄色,然后是单个蓝色等等……

示例数据:

df <- structure(list(date = c("30/04/2011", "01/05/2011", "02/05/2011", "03/05/2011", "04/05/2011", "05/05/2011", "06/05/2011", "07/05/2011", "08/05/2011", "09/05/2011", "10/05/2011", "11/05/2011", "12/05/2011", "13/05/2011", "14/05/2011", "15/05/2011", "16/05/2011", "17/05/2011", "18/05/2011", "19/05/2011", "20/05/2011", "21/05/2011", "22/05/2011", "23/05/2011", "24/05/2011", "25/05/2011", "26/05/2011", "27/05/2011", "28/05/2011", "29/05/2011", "30/05/2011", "31/05/2011", "01/06/2011", "02/06/2011", "03/06/2011", "04/06/2011", "05/06/2011", "06/06/2011", "07/06/2011", "08/06/2011", "09/06/2011", "10/06/2011", "11/06/2011", "12/06/2011", "13/06/2011", "14/06/2011", "15/06/2011", "16/06/2011", "17/06/2011", "18/06/2011", "19/06/2011", "20/06/2011", "21/06/2011", "22/06/2011", "23/06/2011", "24/06/2011", "25/06/2011", "26/06/2011", "27/06/2011", "28/06/2011", "29/06/2011", "30/06/2011", "01/07/2011", "02/07/2011", "03/07/2011", "04/07/2011", "05/07/2011", "06/07/2011", "07/07/2011", "08/07/2011", "09/07/2011", "10/07/2011", "11/07/2011", "12/07/2011", "13/07/2011", "14/07/2011", "15/07/2011", "16/07/2011", "17/07/2011", "18/07/2011", "19/07/2011", "20/07/2011", "21/07/2011", "22/07/2011", "23/07/2011", "24/07/2011"), a = c(0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L), b = c(0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L), c = c(1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L)), .Names = c("date", "a", "b", "c"), class = "data.frame", row.names = c(NA, -86L))

head(df)
#         date a b c
# 1 30/04/2011 0 0 1
# 2 01/05/2011 0 1 1
# 3 02/05/2011 1 1 0
# 4 03/05/2011 1 0 0
# 5 04/05/2011 0 0 0

这一定是很容易实现的事情,但我无法理解(例如,条形图似乎对此不起作用)。任何帮助,将不胜感激。谢谢!

G.格洛腾迪克

对于ggplot2图,首先将df转换为长格式(使用reshape2包中的melt),将date列转换为"Date"class并将value列转换为因数,然后使用geom_tile

library(ggplot2)
library(reshape2)

long <- melt(df, measure.var = 2:4)
long <- transform(long, date = as.Date(long$date, "%d/%m/%Y"), value = factor(value))

ggplot(long, aes(date, variable)) + 
   geom_tile(aes(fill = value)) + 
   scale_fill_manual(values = c("blue", "yellow", "red"))

截屏

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 r 中创建堆积条形图

来自分类Dev

如何在dc.js中呈现时间序列/分类堆积条形图,过滤堆栈和条形图

来自分类Dev

如何水平显示堆积的条形图?

来自分类Dev

将R中的时间序列绘制为堆积条形图

来自分类Dev

在SSRS中创建堆积的条形图

来自分类Dev

如何在matplotlib中制作堆积的条形图?

来自分类Dev

R中的圆形堆积条形图

来自分类Dev

R中的堆积条形图

来自分类Dev

如何在R中创建条形图

来自分类Dev

如何在 r 中创建条形图?

来自分类Dev

R堆积条形图

来自分类Dev

根据季度时间序列绘制堆积条形图

来自分类Dev

在 R 中创建水平条形图以显示活动序列

来自分类Dev

R:使用Plotly()的水平堆积条形图

来自分类Dev

数据框水平堆积条形图

来自分类Dev

R中的堆栈时间序列图

来自分类Dev

在R中作图:如何在时间序列数据中绘制堆叠的条形图以显示百分比构成?

来自分类Dev

使用熊猫在不同轴上绘制条形图和时间序列图

来自分类Dev

堆积条形图

来自分类Dev

堆积条形图

来自分类Dev

堆积条形图

来自分类Dev

在Excel中创建带有时间间隔的甘特图(堆积条形图)

来自分类Dev

如何在R中制作渐变颜色填充的时间序列图

来自分类Dev

如何在R中以日期格式绘制数据的时间序列图

来自分类Dev

如何为堆积条形图创建查询

来自分类Dev

如何标准化数据并创建堆积条形图?

来自分类Dev

如何创建多色 NativeScript BarSeries 堆积条形图

来自分类Dev

无法创建堆积的条形图?

来自分类Dev

Matplotlib - 创建堆积条形图