2016-12-08 52 views
0

可以说我有绘制的人物一些变量,并链接了点的颜色对剧情其他一些变量。这是很容易在ggplot2做,产生如下图:添加单元标签颜色渐变传说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") 

enter image description here

不过,我想了“小姐”的传说有单位。具体而言,我希望这些单位为瓦特米-2小时^ -1(带有适当格式的上标)。什么是最直接的方式来添加此?

回答

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) 

enter image description here

UPDATE:你可以把单位的图例旁边,但你可能需要手动调整它得到安置的权利(尽管有人谁明白的了GROB结构ggplot比我更好的可能会自动化它)。另外,即使我关闭了剪裁,如果图例太接近图例,图例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) 

enter image description here

+0

是否有可能使这一个标签是“瓦*米^ -2“,也许旋转90度,并在颜色渐变条的左侧? – colin

+1

查看更新的代码。 – eipi10

1

如果您在图例希望它只是上面这将是解决办法

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", name = bquote('' ~W ~ m^-2~h^-1*'')) 

enter image description here