我终于开始进入Hadley Wickham令人印象深刻的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命令 - 只是想先把简单的东西放下来。
答案 0 :(得分:7)
我认为您正在尝试调整文本本身的大小,而不是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)
答案 1 :(得分:5)
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)
如果在qplot的geom参数中给出“text”,则使用默认大小,然后被覆盖(或者在这种情况下被覆盖)。给Chase支票。 (编辑:应该大小为2.5)
Edit2:挖掘但是我找到了让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)
必须有更好的方式......
答案 2 :(得分: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到形状, cex 到大小)