假设我在图中绘制了一些变量,并将图中点的颜色链接到其他一些变量。这很容易做到ggplot2并生成下图:
require(ggplot2)
miss <- sample(c(NA, 1:5), nrow(mtcars), rep = TRUE)
qplot(mpg, wt, data = mtcars, colour = miss) +
scale_colour_gradient(na.value = "black")
Run Code Online (Sandbox Code Playgroud)
然而,我希望“小姐”传说有单位。具体来说,我希望这些单位是瓦特米^-2小时^-1(具有适当格式的上标)。添加此内容最直接的方法是什么?
创建一个包含所需标签文本的向量,包括任何特殊的绘图数学表达式,然后用于parse将其计算为将在绘图中正确渲染的表达式。然后,在绘图代码中,使用breaks参数设置所需的中断,并在参数中使用相应的标签labels。
labs = parse(text=paste0(1:5, "~watts%.%meter^-2"))
qplot(mpg, wt, data = mtcars, colour = miss) +
scale_colour_gradient(na.value = "black", breaks=1:5, labels=labs)
Run Code Online (Sandbox Code Playgroud)
更新:您可以将单位放在图例旁边,但您可能需要手动调整它才能正确放置(尽管比我更了解 ggplot 的 grob 结构的人可能能够自动化它)。另外,即使我关闭了剪辑,如果图例与图例太接近,图例 grob 仍然会覆盖单位注释。我不知道如何解决这个问题。
p1 = qplot(mpg, wt, data = mtcars, colour = miss) +
scale_colour_gradient(na.value = "black") +
annotate(x=max(mtcars$mpg) + 0.25*diff(range(mtcars$mpg)),
y=mean(range(mtcars$wt)) - 0.1,
label=lbl, geom="text", parse=TRUE, angle=-90, size=3.3) +
coord_cartesian(xlim=range(mtcars$mpg)) +
theme(plot.margin=unit(c(0.5,2,0.5,0.5), "lines"))
# Turn off clipping
gt <- ggplot_gtable(ggplot_build(p1))
gt$layout$clip <- "off"
grid.draw(gt)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2310 次 |
| 最近记录: |