我试图将两个图例添加到同一个ggplot2图表中,并且我在对齐时遇到了很糟糕的时间。我已经得到了代表一些数据的点,然后也安装了回归线,所以我希望将颜色的图例分开,以便它清楚哪些只是针对点而哪些是适合的线条。到目前为止,这是我最好的尝试:
gtable
我不知道如何为#34;性别"在左边与另外两个对齐,我不希望中间有这么多的空白区域。
我还摆弄了grid
和viewPort
个套餐'像library(gtable)
library(grid)
grid.newpage()
pushViewport(vp = viewport())
vp1 <- viewport(width = 0.8, height = 1, x = 0, y = 0)
grid.draw(PlotMain)
vp2 <- viewport(width = 0.2, x = 0.9, y = 0.6)
pushViewport(vp2)
grid.draw(LegendStudy)
pushViewport(vp3 = viewport(width = 0.2, x = 0.9, y = 0.4))
grid.draw(LegendTrend)
这样的命令,但对于如何使用它们完全无能为力。 (对于体面的教程的建议将非常感激;我还没有找到任何建议。)我试过了
<script>
var onCommand = function (column, command, record, recordIndex, cellIndex) {
Ext.Msg.alert('record = ' + record.data.ID);
Ext.Ajax.request({
url: '/Details/',
method: 'GET',
params: {
id: record.data.ID
},
success: function (response) {
var result = (response.responseText);
if (result != "") {
modelName = result;
CreateLookUp(combo, id, false, true);
} else {
CreateLookUp(combo, id, true, false);
}
}
});
}
</script>
答案 0 :(得分:1)
它不清楚OP想要什么,但下一个选择是将第二个传奇的gtable添加到第一个,
library(gtable)
leg2 <- LegendTrend$grobs[[1]]
leg <- gtable_add_rows(LegendStudy, pos = nrow(LegendStudy) - 1,
heights = sum(leg2$heights))
leg <- gtable_add_grob(leg, leg2, t = nrow(leg) - 1, l = 3)
grid.arrange(PlotMain, right = leg)
关于网格视口的教程,有R图形书,但是ggplot2的设计已经从基础网格大幅度漂移,引入了gtable作为放置图形元素的中间框架。 ggplot2传说是嵌套gtables的复杂结构,很少有人理解。 gtable没有记录,它的开发很早就停止了,所以最好的信息来源就是代码本身。
答案 1 :(得分:0)
leg <- gtable_rbind(LegendStudy, LegendTrend, size = "first")
grid.arrange(PlotMain, right = leg)