Как я могу добавить легенду к хорошему сюжету в R? - PullRequest
3 голосов
/ 26 августа 2011

Я использую пакет goodfit из vcd для получения правильных участков.

Я хотел бы добавить легенду о том, что столбцы - это действительные значения, а точки (соединенные линией) - это соответствие, например Пуассон и М.Л.

legend не работает. Как я могу легко добавить легенду к этому сюжету?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 26 августа 2011

Функция построения для объектов goodfit использует графическую систему grid (см. ?rootogram и getAnywhere(rootogram.default)).

У вас есть два варианта:

  1. используйте довольно ограниченную функцию grid.legend (из пакета grid).
  2. внедрите легенду базовой графики в сетку, используя пакет gridBase.

Вотпростой пример для первого варианта:

library("vcd")
dummy <- rnbinom(200, size=1.5, prob=0.8)
gf <- goodfit(dummy, type="nbinomial", method="MinChisq")
plot(gf)
pushViewport(viewport(x=unit(0.8, "npc"),
                      y=unit(0.8, "npc"),
                      width=stringWidth("Legend x"),
                      height=unit(6, "line"),
                      name="vp1"))
grid.legend(labels=c("Legend 1", "Legend 2"), pch=1:2)
popViewport()
1 голос
/ 28 августа 2011

Изменение ответа @ rcs для использования grid_legend (в пакете vcd вместе с goodfit), предназначенного для пользователей (grid.legend - недокументированная внутренняя функция), и для отображения легенды, специально предназначенной дляэтот сюжет.Было бы неплохо использовать fill=c(NA,"gray") как в legend в базовой графике, но это не реализовано в grid_legend.

library("vcd")
dummy <- rnbinom(200, size=1.5, prob=0.8)
gf <- goodfit(dummy, type="nbinomial", method="MinChisq")
plot(gf)
grid_legend(x=unit(0.8, "npc"),
            y=unit(0.8, "npc"),
            labels=c("est NBinom (MinChiSq)","obs"),
            title="",
            pch=c(16,15),col=c("red","gray"))
0 голосов
/ 26 августа 2011

Трудно сказать без конкретного примера (AFAIK это не ограничение с goodfit), но я бы проверил несколько вещей с помощью legend:

  1. Вы можете поместитьлегенда с "topright", "bottomleft" и т. д. для аргумента x.
  2. Вы можете запросить ограничения по осям x и y с помощью par("usr").Если график находится в масштабе журнала, и вы хотите разместить легенду с максимальным значением y, вы должны использовать 10^par("usr")[4] и т. Д.
  3. Передать аргумент xpd=NA, чтобы проверитьпоместите легенду за пределы области печати и посмотрите, нужно ли установить xjust или yjust.
...