Подтвердить что ты не робот

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

Наконец-то я начал получать впечатляющий пакет ggplot2 от Hadley Wickham, и я проработал свой путь через его книгу.

В своей работе я часто показываю диаграммы рассеяния с помощью текстовых меток. Это означало команду 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 - просто хотел сначала собрать простые вещи.

4b9b3361

Ответ 1

Я думаю, что вы являетесь tyring для настройки размера самого текста, а не оси 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)

Ответ 2

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))

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

 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 указывается "текст", используется размер по умолчанию, а затем он перезаписывается (или записывается как бы в этом случае). Дайте Чейз проверку. (Edit: должен сделать размер 2.5)

Edit2: Took, но я нашел способ заставить 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

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 to shape, cex для размера)