эквивалент cex в ggplot2 - PullRequest
       6

эквивалент cex в ggplot2

14 голосов
/ 24 декабря 2010

Я наконец-то начал изучать впечатляющий пакет ggplot2 Хэдли Уикхэма и пробираюсь через его книгу.

В своей работе я часто отображаю диаграммы рассеяния с использованием текстовых меток. Это означает команду plot(), за которой следует text(). Я использовал cex, чтобы быстро подстроиться под размер шрифта.

Я очень быстро создал текстовую диаграмму рассеяния, используя qplot. Но я не могу отрегулировать размер быстро. Вот глупый пример кода:

data(state)
qplot(Income,Population,data=as.data.frame(state.x77),geom=c("smooth","text"),method="lm",label=state.abb)

Тогда как в старые времена я делал:

plot(xlim=range(Income),ylim=range(Population),data=state.x77,type="n")
text(Income,Population,state.abb,data=state.x77, cex=.5)

Если бы я хотел, чтобы размер текста сократился вдвое по сравнению с тем, что я видел по умолчанию (о, и мне пришлось бы делать линейную регрессию вручную и добавить abline (), чтобы получить линию регрессии - приятно сделать все это в одном через ggplot2).

Я знаю, что могу добавить корректировку размера с размером, но это не относительная корректировка размера, к которой я привык. Хэдли написал мне в Твиттере, что размер измеряется в мм, что не совсем понятно для меня. Поскольку я часто корректирую размер графика, либо в R, либо в LaTeX, абсолютная шкала мне не так полезна.

Я, должно быть, упускаю что-то действительно простое. Что это?

О - и я знаю, что я еще не использовал мощные команды ggplot2 - просто хотел сначала разобраться с простыми вещами.

Ответы [ 3 ]

7 голосов
/ 25 декабря 2010

Я думаю, вы пытаетесь настроить размер самого текста, а не оси X, верно?

Вот подход с использованием команды ggplot().

ggplot(data = as.data.frame(state.x77), aes(x = Income, y = Population)) +
    geom_smooth(method = "lm", se = FALSE) +
    geom_text(aes(label = state.abb), size = 2.5)
5 голосов
/ 24 декабря 2010
qp <- qplot(Income, Population,data=as.data.frame(state.x77), 
           geom=c("smooth","text"),
           method="lm", 
           label=state.abb)
qp + opts(axis.text.x = theme_text(size = 5))

Я думаю, что Чейз, вероятно, прав насчет того, чтобы указывать точки в качестве "меток":

 qp <- qplot(Income, Population,data=as.data.frame(state.x77),
                geom="smooth",method="lm",label=state.abb)
    qp + geom_text(aes(label = state.abb), size = 2.5)

Если в аргументе geom для qplot указан текст, используется размер по умолчанию, а затем он перезаписывается(или подписан как бы в этом случае).Дайте Чейзу чек.(Правка: должен быть размер 2.5)

Правка2: Взял копать, но я нашел способ заставить ggplot2 откашлять некоторые из его значений по умолчанию: https://github.com/hadley/ggplot2/blob/master/R/geom-text.r

GeomText$new()$geom$default_aes
proto method (instantiated with ): function (.) 
aes(colour = "black", size = 5, angle = 0, hjust = 0.5, vjust = 0.5, 
    alpha = 1)

Там должно бытьлучший способ ....

3 голосов
/ 02 января 2014
qp <- qplot(Income, Population,data=as.data.frame(state.x77),
                geom="smooth",method="lm",label=state.abb)
    qp + geom_text(aes(label = state.abb, cex = 1.2))

Добавить cex внутрь aes получит то, что вы хотите, как указано в:

aes создает список неоцененных выражений. Эта функция также выполняет частичное сопоставление имен, преобразует цвет в цвет и имена старого стиля R в имена ggplot (например, pch для формы, cex для размера)

  1. http://docs.ggplot2.org/current/aes.html
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...