Как лучше всего аннотировать этот сюжет ggplot2? [Р] - PullRequest
2 голосов
/ 12 мая 2010

Вот сюжет:

library(ggplot2)
ggplot(mtcars, aes(x = factor(cyl), y = hp, group = factor(am), color = factor(am))) +
    stat_smooth(fun.data = "mean_cl_boot", geom = "pointrange") +
    stat_smooth(fun.data = "mean_cl_boot", geom = "line") +
    geom_hline(yintercept = 130, color = "red") +
    annotate("text", label = "130 hp", x = .22, y = 135, size = 4)

Я экспериментировал с маркировкой geom_hline несколькими способами, каждый из которых делает что-то, что я хочу, но имеет проблему, которой нет у других методов. annotate(), использованное выше, приятно - размер текста может быть изменен, черный, и его легко позиционировать. Но он может быть размещен только внутри самого графика, а не вне графика, как метки оси. Кроме того, в легенде появляется «а», которую я не могу игнорировать с legend = FALSE.

legend = FALSE работает с geom_text, но я не могу получить geom_text просто черным - кажется, что он запутывается в раскраске линий.

grid.text позволяет мне разместить текст где угодно, но я не могу изменить его размер.

Я определенно могу принять текст, находящийся внутри области сюжета, но я бы хотел, чтобы легенда была чистой. Я чувствую, что упускаю что-то простое, но я просто жареная. Заранее благодарим за внимание.

Ответы [ 2 ]

4 голосов
/ 14 мая 2010

Эстетика, указанная в начальном вызове ggplot (), распространяется вниз по всем гемам. Но если вам это не нравится, вы можете указать эстетику в любом слое.

Итак, чтобы geom_text не наследовал цветовую эстетику, просто удалите «color» из aes () вашего вызова ggplot () и включите вызов aes (color = factor (am)) в ваши два stat_smooth () вызовы.

2 голосов
/ 12 мая 2010

Ой ... хорошо. Я ответил на свой вопрос: чтобы он отображался как метки оси, сделайте метку оси:

ggplot(mtcars, aes(x = factor(cyl), y = hp, group = factor(am), color = factor(am))) +
    stat_smooth(fun.data = "mean_cl_boot", geom = "pointrange") +
    stat_smooth(fun.data = "mean_cl_boot", geom = "line") +
    geom_hline(yintercept = 130, color = "red") +
    scale_y_continuous(breaks =  c(0, 50, 100, 130, seq(150, 400, 50)))

Пожалуйста, ответьте, если у вас есть другие мысли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...