我使用ggplot2(版本0.9.3.1)在R(版本R版本3.0.1(2013-05-16))中生成了一个简单的图,显示了一组数据的相关系数.目前,绘图右侧的图例颜色条是整个绘图大小的一部分.
我希望图例颜色条与图表的高度相同.我以为我可以使用legend.key.height来做到这一点,但我发现事实并非如此.我调查了网格包单元功能,发现那里有一些标准化单元,但是当我尝试它们时(单位(1,“npc”)),颜色条太高了,离开了页面.
如何使图例与图块本身的高度相同?
一个完整的自包含示例如下:
# Load the needed libraries library(ggplot2) library(grid) library(scales) library(reshape2) # Generate a collection of sample data variables = c("Var1","Var2","Var3") data = matrix(runif(9,-1,1),3,3) diag(data) = 1 colnames(data) = variables rownames(data) = variables # Generate the plot corrs = data ggplot(melt(corrs),aes(x = Var1,y = Var2,fill = value)) + geom_tile() + geom_text(parse = TRUE,aes(label = sprintf("%.2f",value)),size = 3,color = "white") + theme_bw() + theme(panel.border = element_blank(),axis.text.x = element_text(angle = 90,vjust = 0.5,hjust = 1),aspect.ratio = 1,legend.position = "right",legend.key.height = unit(1,"inch")) + labs(x = "",y = "",fill = "",title = "Correlation Coefficients") + scale_fill_gradient2(limits = c(-1,expand = c(0,0),low = muted("red"),mid = "black",high = muted("blue"))
解决方法
这看起来很棘手,我得到的最接近的是这个,
## panel height is 1null,so we work it out by subtracting the other heights from 1npc ## and 1line for the default plot margins panel_height = unit(1,"npc") - sum(ggplotGrob(plot)[["heights"]][-3]) - unit(1,"line") plot + guides(fill= guide_colorbar(barheight=panel_height))
不幸的是,垂直理由有点偏.