逻辑值的图密度

时间:2019-02-11 07:55:24

标签: r plot density-plot

我有一个带有两个变量的数据框。第一个变量是日期。第二个变量是逻辑变量,它指定当天某条语句是对还是错(例如“那天下雨了。”)。

我想绘制该数据,以便曲线根据时间跨度中FALSE值的密度从1(对于TRUE)向0(对于FALSE)倾斜多少。即,彼此接近的FALSE值越多,下降越深。像这样:

sketch giving an example of the outcome I want to achieve


样本数据:

dat <- read.table(textConnection("
Var1 Var2 
2019-01-01 TRUE
2019-01-02 TRUE
2019-01-03 TRUE
2019-01-04 TRUE
2019-01-05 TRUE
2019-01-06 TRUE
2019-01-07 TRUE
2019-01-08 TRUE
2019-01-09 FALSE
2019-01-10 TRUE
2019-01-11 TRUE
2019-01-12 TRUE
2019-01-13 TRUE
2019-01-14 TRUE
2019-01-15 TRUE
2019-01-16 TRUE
2019-01-17 FALSE
2019-01-18 TRUE
2019-01-19 FALSE
2019-01-20 TRUE
2019-01-21 FALSE
2019-01-22 TRUE
2019-01-23 TRUE
2019-01-24 TRUE
2019-01-25 TRUE
2019-01-26 TRUE
2019-01-27 TRUE
2019-01-28 TRUE
2019-01-29 TRUE
2019-01-30 TRUE
2019-01-31 TRUE
2019-02-01 TRUE
2019-02-02 FALSE
2019-02-03 TRUE
2019-02-04 FALSE
2019-02-05 FALSE
2019-02-06 FALSE
2019-02-07 TRUE
2019-02-08 FALSE
2019-02-09 FALSE
2019-02-10 TRUE
2019-02-11 TRUE
2019-02-12 TRUE
2019-02-13 TRUE
2019-02-14 TRUE
2019-02-15 TRUE
2019-02-16 FALSE
2019-02-17 FALSE
2019-02-18 FALSE
2019-02-19 FALSE
2019-02-20 TRUE
2019-02-21 FALSE
2019-02-22 TRUE
2019-02-23 FALSE
2019-02-24 FALSE
2019-02-25 TRUE
2019-02-26 TRUE
2019-02-27 FALSE
2019-02-28 TRUE
2019-03-01 TRUE
"), header = TRUE, colClasses=c("Date", "logical"))
plot(dat)

2 个答案:

答案 0 :(得分:2)

不确定您要寻找的是什么,但这是一个主意:

library(ggplot2)

ggplot(data = aggregate(Var2 ~ Var1, dat, FUN = mean), aes(x = Var1, y = Var2)) + 
  geom_smooth(se = FALSE, method = "loess") +
  geom_point(data = dat, aes(x = Var1, y = as.integer(Var2)), shape=1)

enter image description here

答案 1 :(得分:1)

使用verify-ca将逻辑转换为数字(从here复制的ma函数)后,您可以计算移动平均值:

ggplot

您将能够找到更好的纵向数据移动平均值公式。

enter image description here