Мой вопрос прост, я думаю, но Гуглинг и суетливость меня ни к чему. Надеюсь, кто-то здесь может помочь. У меня есть данные, которые были собраны из двух разных групп лечения в течение трех лет. Я хочу создать коробку для каждой комбинации лечения и года (чтобы увидеть, влияет ли эффект лечения на год). Однако, я не могу понять, как маркировать оси х, как я хочу, чтобы с помощью ggplot2.
Используя ggplot2, как я могу пометить ось x только одним из двух факторов, используемых для создания сгруппированного ящика?
Вот код, который создает некоторые подделать вид данных похож на мою собственную.
fakeX = factor(rep(c(0,1), times=60))
fakeY = factor(rep(c(1,2,3), each=40))
fakeZ = round(runif(120, 0, 12), digits=1)
df1 = data.frame(fakeX, fakeY, fakeZ)
df1$inter = interaction(df1$fakeX, df1$fakeY)
ggplot(df1, aes(x=inter, y = fakeZ)) +
stat_boxplot(geom='errorbar', lwd=1.75) +
geom_boxplot(outlier.size=5, lwd = 1.75, fatten=1.25,
fill = rep(c("dim gray", "ivory3"), times=3), aes(fill=fakeY)) +
scale_x_discrete(labels = c("2013", "", "2014", "", "2015", ""))
Этот код производит набор, как те, присущи рефлективный, вербальный Я ищу:
До сих пор так хорошо. Однако, как вы можете видеть, у меня уже есть методы, обозначенные цветом (заголовок рисунка объяснит, что есть), , поэтому мне просто нужны метки оси, чтобы сказать, в каком году каждый набор из двух ящиков составляет от. Тем не менее, я не могу понять код, который будет получать метки года в центре точно между двумя ящиками, каждый из которых предназначен для, и это то, что я считаю самым ясным. Прямо сейчас, лучшее, что я смог сделать, это поставить ярлык года с первым boxplot с каждого года. Я пробовал использовать аргумент breaks
внутри scale_x_discrete
, но безрезультатно. Я также пробовал передать position=position_nudge()
звонок scale_x_discrete
, но это тоже не сработало. Если я добавлю пробелы перед метками оси, тогда я могу подделать то, что ищу, но мне пришлось бы использовать пробную версию и ошибку, чтобы получить количество пробелов, необходимых точно для каждого графика, и кажется, что там должен быть лучшим способом. Есть предположения?
Я думаю, что вы ищете подход больше как 'ggplot (df1, AES (х = fakeY, у = fakeZ)) + geom_boxplot (ОЗ (fill = fakeX), position = "dodge") '. – joran