我正在尝试创建一个图表以跟踪几天中多个因素的结果。理想情况下,我希望我的x轴为“天”,该天号位于该特定日期代表的中间,y轴为结果,并且构面为手数(1-4)。由于重复的次数可能会有所不同,因此我很难使用可重复的文字来使这一天以底部为中心。
我使用的是本文Multi-row x-axis labels in ggplot line chart中显示的想法,但一直没有取得任何进展。
这是我一直在使用的一些代码以及到目前为止的内容。 x轴太忙了,我正在尝试合并它。
data <- data.frame(System = rep(c("A", "B"), each = 120), Lot = rep(1:4, each = 30),
Day = rep(1:5, each = 6), Rep = rep(1:6, 40), Result = rnorm(240))
library(ggplot2)
ggplot(data, aes(x = interaction(Day, Rep, lex.order = TRUE), y = Result, color = System, group = System)) +
geom_point() +
geom_line() +
theme(legend.position = "bottom") +
facet_wrap(~Lot, ncol = 1) +
geom_vline(xintercept = (which(data$Rep == 1 & data$Day != 1)), color = "gray60")
答案 0 :(得分:0)
我不确定100%是否正是您所追求的,但这将使一天在x轴上居中。
library(dplyr)
library(tidyr)
library(ggplot2)
df <- data.frame(System = rep(c("A", "B"), each = 120), Lot = rep(1:4, each = 30),
Day = rep(1:5, each = 6), Rep = rep(1:6, 40), Result = rnorm(240))
df <- df %>%
unite(Day_Rep, Day, Rep, sep = ".", remove = F) %>%
mutate(Day_Rep = as.numeric(Day_Rep))
ggplot(df, aes(x = Day_Rep, y = Result, color = System, group = System)) +
geom_point() +
geom_line() +
theme(legend.position = "bottom") +
facet_wrap(~Lot, ncol = 1) +
scale_x_continuous(labels = df$Day, breaks = df$Day + 0.5)+
geom_vline(xintercept = setdiff(unique(df$Day), 1))