让我们说我在图中绘制了一些变量,并将图中点的颜色与其他变量相关联。这在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")
然而,我希望'miss'传奇有单位。具体来说,我希望这些单位为瓦特米^ -2小时^ -1(具有适当格式的上标)。添加此内容的最直接方法是什么?
答案 0 :(得分:2)
创建一个包含所需标签文本的向量,包括任何特殊的plotmath表达式,然后使用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)
更新:您可以将单位放在图例旁边,但您可能需要手动调整才能获得正确的位置(尽管有人比我更了解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)
答案 1 :(得分:1)