【问题标题】:line connecting missing data R连接缺失数据 R 的线
【发布时间】:2016-01-17 05:44:14
【问题描述】:

我想在 R 中画出一只鸟离开巢穴的日子。 我缺少数据,因此难以显示总体趋势。我想用虚线替换我没有信息的日子的线。我完全不知道该怎么做。可以在 R 中做吗?

     > time.away.1
   hrs.away days.rel
1     0.380       -2
2     0.950       -1
3     1.000        0
4     0.200        1
5     0.490       12
6     0.280       13
7     0.130       14
8     0.750       20
9     0.160       21
10    1.830       22
11    0.128       26
12    0.126       27
13    0.500       28
14    0.250       31
15    0.230       32
16    0.220       33
17    0.530       40
18    3.220       41
19    0.430       42
20    1.960       45
21    1.490       46
22   24.000       56
23   24.000       57
24   24.000       58
25   24.000       59
26   24.000       60
27   24.000       61

我的尝试:

plot(hrs.away ~ days.rel, data=time.away.1,
     type="o",
     main="Time Away Relative to Nest Age",
     ylab="Time spent away",
     xlab="Days Relative to Initiation",
     ylim=c(0,4))

【问题讨论】:

  • 您可能想要包含用于制作当前情节的代码?
  • 这不完全是我所拥有的,我找不到我用来制作它的代码(它早在 5 月),现在我真的因为没有保存确切的代码而自责。但我只是摆弄它的外观。这实际上是一回事。
  • 我希望实线表示我有哪些日期的数据,而虚线表示我没有哪些数据。
  • 是的。如果这是有道理的。现在看起来我每天都有数据,这不是真的。

标签: r plot line missing-data


【解决方案1】:

这是一种使用diff 使变量确定序列是否丢失的方法。请注意,我将您的数据重命名为dat

## make the flag variable
dat$type <- c(TRUE, diff(dat$days.rel) == 1)

plot(hrs.away ~ days.rel, data=dat,
     type="p",
     main="Time Away Relative to Nest Age",
     ylab="Time spent away",
     xlab="Days Relative to Initiation",
     ylim=c(0,4))
legend("topright", c("missing", "sampled"), lty=c(2,1))

## Add line segments
len <- nrow(dat)
with(dat,
     segments(x0=days.rel[-len], y0=hrs.away[-len],
              x1=days.rel[-1], y1=hrs.away[-1],
              lty=ifelse(type[-1], 1, 2),
              lwd=ifelse(type[-1], 2, 1))
     )

对于ggplot版本,您可以使用上面使用的滞后变量制作另一个data.frame,

library(ggplot2)
dat2 <- with(dat, data.frame(x=days.rel[-len], xend=days.rel[-1],
                             y=hrs.away[-len], yend=hrs.away[-1],
                             type=factor(as.integer(type[-1]))))

ggplot() +
  geom_point(data=dat, aes(x=days.rel, y=hrs.away)) +
  geom_segment(data=dat2, aes(x=x, xend=xend, y=y, yend=yend, lty=type, size=type)) +
  scale_linetype_manual(values=2:1) +
  scale_size_manual(values=c(0.5,1)) +
  ylim(0, 4) + theme_bw()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多