У меня есть такая база данных,
ani <- structure(list(year = c(2009L, 2010L, 2011L, 2012L, 2013L, 2014L,
2010L, 2011L, 2012L, 2013L, 2014L, 2008L,
2009L, 2010L, 2011L, 2012L, 2013L, 2014L),
animal = c("cat", "cat", "cat", "cat", "cat", "cat",
"dog", "dog", "dog", "dog", "dog", "rat",
"rat", "rat", "rat", "rat", "rat", "rat"),
height = c(12.5, 20, 25, 26, 28, 31, 32, 34, 37,
44, 44, 4, 5, 5, 6, 8, 8, 9),
weight = c(2.4, 2.6, 2.7, 2.8, 3.2, 4.4, 4.7, 5.1,
5.6, 5.8, 6.5, 0.4, 0.5, 0.9, 1.2, 1.1, 1.3, 1.4)),
.Names = c("year", "animal", "height", "weight"),
class = "data.frame",
row.names = c(NA, -18L))
Мне удалось получить чаты временных рядов по росту и весу для каждого животного таким образом (здесь я это сделал для кошки):
cat<- subset(ani, animal == "cat")
cat[2]<-NULL # I need to delete the column of the type of animal
Это полностью противоречит моей конечной цели - составить диаграмму из нескольких панелей по типу животных, но я нашел единственный способ построить несколько временных рядов.
library(reshape2)
library(ggplot2)
meltcat <- melt(cat,id="year")
chartcat <- ggplot(data = meltcat, aes(x = year, y = value, colour=variable)) + geom_line()
print(chartcat)
Однако я мог быНельзя найти способ создания трехуровневой (фасетной) одиночной диаграммы по строкам с использованием переменной «животное».
Допустим, в самом нижнем ряду я хочу построить временной ряд (с 2009 по 2014 годы) роста и веса кошки.В среднем ряду я хочу построить временные ряды (с 2010 по 2014 год) роста и веса собаки.И в самом верхнем ряду я хочу построить временной ряд (с 2008 по 2014 год) роста и веса крысы.Тогда будет две серии на панель (рост и вес).
Обратите внимание, что серия каждого животного отличается по длине.Для меня это хорошо иметь ось X с 2008 по 2014 год с отсутствующими данными для кошки в 2008 году и для собаки в 2008 и 2009 годах. Однако, конечно, если это невозможно, для меня это будетздорово, если вы поможете мне в случае, когда все серии имеют одинаковую длину (2010-2014).
Как я могу получить этот график в ggplot2?
Большое спасибо заранее