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