将矢量展开为相等的步骤

时间:2017-11-28 10:46:06

标签: r dataframe ggplot2

假设我有一个向量

app.directive('ngModelSniffer', function() {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function(scope, element, attrs, model)
        {
            model.$validators.shouldBeNumber = function(modelValue, viewValue)
            {
                return !isNaN(parseFloat(viewValue));
            };
        }
    };
});

其中library(ggplot2) df <- data.frame(Tjump = c(0.2260760,0.2628534,0.4053514,0.2938391,0.5940260), State = c(9,10,9,8,7)) 是发生下一状态转换之后的经过时间。 Tjump可以通过

绘制为阶梯函数
df

我现在如何将此步骤功能与另一个在qplot(cumsum(df$Tjump), df$State, geom = "step") 上运行的函数一起绘制?

或者,采用不同的方法:如何通过保留times <- seq(from = 0, to = tail(df$Time, 1), by = 0.01)的步骤性质来扩展df以获得与times相同数量的条目?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,则无需扩展数据框。您可以使用例如geom_lines(或geom_step添加另一个图表,如果您想要另一个步骤函数。)

例如如下:

# Note that df$Time does not exist, so I changed it to sum(df$Tjump).
times <- seq(from = 0, to = sum(df$Tjump), by = 0.01)

qplot(cumsum(df$Tjump), df$State, geom = "step") + 
  geom_line(aes(x=times,y=8+runif(length(times),0,1)),colour='red')

输出:

Sample plot

希望这有帮助!

弗洛里安

答案 1 :(得分:0)

  

如何通过保留它的步骤性质来扩展df以获得相同数量的条目?

可以使用approx来完成,例如:

f <- approx(df$Time, df$State, method = 'constant', n = 100)