首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >geom_raster未按预期呈现

geom_raster未按预期呈现
EN

Stack Overflow用户
提问于 2018-03-29 07:47:29
回答 1查看 337关注 0票数 0

我以前问过一个相关的问题(Status by duration bar visualisation),但是我现在遇到了图形渲染的问题。

下面是复制我目前拥有的内容的代码:

代码语言:javascript
复制
    testData <- structure(list(result = c("SUCCESS", "SUCCESS", "SUCCESS","SUCCESS", 
"SUCCESS", "SUCCESS", "SUCCESS", "SUCCESS", "SUCCESS", "SUCCESS", 
"SUCCESS", "SUCCESS", "FAILURE", "FAILURE", "FAILURE", "SUCCESS", 
"SUCCESS", "SUCCESS", "SUCCESS", "SUCCESS"), timestamp = c(1493801810680, 
1493737048748, 1493714474308, 1493382713281, 1493735761855, 1493288844857, 
1493282996949, 1493287445076, 1493802680235, 1493217700328, 1493820960231, 
1493826923306, 1493892937587, 1493894930889, 1493900922844, 1493913941074, 
1493988183593, 1493993210175, 1494232458444, 1494241235864)), .Names = c("result", 
"timestamp"), row.names = c(NA, 20L), class = "data.frame")

    library(plyr)

    testData$timestamp <- anytime(testData$timestamp/1000)
    testData$time <- testData$timestamp
    testData$timestamp <- NULL

    testData <- testData[order(testData$time),]

    getNextTime <- function(time) testData$time[which(grepl(time, testData$time)) + 1]

    testData$nextTime <- sapply(testData$time, getNextTime)

    as.POSIXct(testData$time[is.na(testData$nextTime)])
    testData$nextTime <- as.POSIXct(testData$nextTime, origin = "1970-01-01")
    testData$nextTime[is.na(testData$nextTime)] <- testData$time[is.na(testData$nextTime)] + 60^2

    testFunc <- function(data) {
      data.frame(
        time = seq(data$time[1], data$nextTime[1], by=60^2),
        result = data$result[1])
    }

    test <- dlply(testData,time ~ time, testFunc)

    df <- ldply(test, data.frame)
    df$y <- 0

    df$z[df$result == "SUCCESS"] <- 1
    df$z[df$result == "FAILURE"] <- 2
    df$z <- factor(df$z)

library(ggplot2)
ggplot(df, aes(time, y, fill = z)) + 
  geom_raster() + 
  ylim(-10, 10) +
  scale_fill_manual(values = 2:3)

我明白了:

我希望它能填补字里行间的空白:(就像我前面问题的答案一样:https://stackoverflow.com/a/49492933/2295284 )

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-29 09:06:55

这里有很多选择。一种是只绘制片段:

代码语言:javascript
复制
library(ggplot2)
ggplot(df, aes(time, y, xend = dplyr::lead(time), yend = y, color = z)) + 
  geom_segment(size = 5) + 
  ylim(-10, 10) +
  scale_color_manual(values = 2:3)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49550643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档