打印时重新排列小时的x轴(Rearrange x-axis of hour when plottin

2019-10-19 01:37发布

我有六组的人看起来像这样的活动记录:

grp hour intensity
1   0   0.048672391
2   0   0.264547556
3   0   0.052459840
4   0   0.078953270
5   0   0.239357060
6   0   0.078163513
1   1   0.029673036
2   1   0.128206479
3   1   0.030184495
4   1   0.076848385
5   1   0.061325717
6   1   0.039264419
1   2   0.020177515
2   2   0.063696611
3   2   0.023759638
4   2   0.047865380
5   2   0.030226285
6   2   0.021652375
...

我做出来的多线图:

library(lattice)
xyplot(intensity ~ hour, groups= grp, type= 'l', data= df)

该图是这样的:

但它不遵循人的生命周期。 我想在x轴的右端搬迁小时0-4。 任何人只要有一些想法? 非常感谢!

更新:我试图改变小时到一个因素,但输出没有看够好:线2300之间的隔断 - 0000有三个平行的“基线”走出半年线旁没有在那里。

df$hour <- as.factor(df$hour)
hourder <- levels(df$hour)
df$hour <- factor(df$hour, levels= c(hourder[6:24], hourder[1:5]))
xyplot(intensity ~ hour, groups= grp, type= 'l', data= df)

Answer 1:

下面是一个使用的解决方案ggplot与仅由两个组为了清楚起见,样本数据一起。 使用这种方法levels从参数factor由泰勒林克建议功能是绝对正确的。

# Required packages
library(ggplot2) 

# Initialize RNG
set.seed(10)

# Sample data
df <- data.frame(
  grp = as.character(rep(1:2, 24)), 
  hour = rep(0:23, each = 2), 
  intensity = runif(2 * 24, min = 0, max = .8)
)

# Plot sample data
ggplot(aes(x = hour, y = intensity, group = grp, colour = grp), data = df) + 
  geom_line() + 
  labs(x = "Time [h]", y = "Intensity") + 
  scale_color_manual("Groups", values = c("1" = "red", "2" = "blue"))

现在,让我们调整的时间尺度!

# Now, reorder your data according to a given index
index <- c(5:23, 0:4)
df$hour <- factor(df$hour, levels = as.character(index), ordered = T)

# Plot sample data with reordered x-axis
ggplot(aes(x = hour, y = intensity, group = grp, colour = grp), data = df) + 
  geom_line() + 
  scale_color_manual("Groups", values = c("1" = "red", "2" = "blue"))

让我知道,如果它;-)



文章来源: Rearrange x-axis of hour when plotting