事件持续时间的R格子浮动条形图因子

时间:2016-01-13 19:25:28

标签: r bar-chart lattice

寻找一种更简洁的制作浮动条形图的方法,该方法显示按因子划分的事件的时间和持续时间(参见克利夫兰的图形数据元素,图2.4)。以下格子代码完成了工作,但很笨重。有更直接的方法吗?

library(lattice)

set.seed(1)
x = sort(unique(sample(1:1000, 40)))
z <- data.frame(x = x, state = c("on", "off"))
z2 <- data.frame(on  = z[z$state=="on", ]$x, 
                 off = z[z$state=="off", ]$x)

# needed for panel.rect 
z2$mp <- with(z2, (on+off)/2) # x-midpoint
z2$w  <- with(z2, off-on)     # x-width
z2$lab <- rep(factor(c("a", "b", "c", "d")), 5) 

xyplot(lab ~ on + off + mp + w, z2, 
       panel = function(x, y, subscripts, groups, ...){
         panel.rect(y = y[subscripts], 
                    x = x[subscripts[groups=="mp"]], 
                    width = x[subscripts[groups=="w"]], 
                    height = 0.5, ...)
       })

具体来说,需要公式lab ~ on + off + mp + w来为面板功能提供必要的点,而需要on + off个变量来自动调整图的大小。如果面板功能不需要知道特定的变量名,我会更喜欢这个。

如果清洁器解决方案使用条件变量,最好采用以下形式的加值点:lab ~ on + off | cvar

0 个答案:

没有答案