Разделение проблем является biggy.
Способность дразнить эти компоненты независимо делает код легче к повторному использованию, и независимо протестируйте. Если Вы на самом деле не знаете, каков MVC, осторожны относительно попытки понять мнения людей, поскольку существует все еще некоторая конкуренция о том, что "Модель" (является ли это бизнес-объектами/Наборами данных/Таблицами данных или если это представляет базовый уровень служб).
я видел все виды реализаций, которые называют себя MVC, но не являются точно и как комментарии в шоу статьи Jeff, MVC является спорным моментом, что я не думаю, что разработчики будут когда-либо полностью согласовать.
А хороший раунд всех различных типов MVC доступен здесь .
Try this to get you started
ggplot() +
geom_point(aes(x, y, colour = "actual"), data = df.actual) +
geom_line(aes(x, y, colour = "approximate"), data = df.approx) +
scale_colour_discrete("Type")
Это своего рода хитрость для изменения легенды путем манипулирования объектом сетки:
library("ggplot2")
df.actual <- data.frame(x=1:100, y=(1:100)*2)
df.approx <- data.frame(x=1:150, y=(1:150)*2 + 5 + rnorm(150, mean=3))
p <- ggplot() +
geom_point(aes(x, y, colour="Actual"), data=df.actual) +
geom_line(aes(x, y, colour="Approximate"), data=df.approx) +
scale_colour_manual(name="Type",
values=c("Actual"="black", "Approximate"="black"))
library("grid")
grob <- ggplotGrob(p)
tmp <- grid.ls(getGrob(grob, "key.segments", grep=TRUE, global=TRUE))$name
grob <- removeGrob(grob, tmp[1]) # remove first line segment in legend key
tmp <- grid.ls(getGrob(grob, "key.points", grep=TRUE, global=TRUE))$name
grob <- removeGrob(grob, tmp[2]) # remove second point in legend key
grid.draw(grob)
ggplot2 output http://img134.imageshack.us/img134/8427/ggplotlegend.png