Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 拼凑中色标的水平对齐_R_Ggplot2_Patchwork - Fatal编程技术网

R 拼凑中色标的水平对齐

R 拼凑中色标的水平对齐,r,ggplot2,patchwork,R,Ggplot2,Patchwork,我正在使用包patchwork来组合多个ggplot2垂直打印。我希望每个绘图的比例直接位于彼此上方,而不管比例名称的长度。目前,天平没有相互对齐 如果可能的话,我愿意使用ggpubr或facet\u grid(),但我已经看到了facets,我还没有找到使用ggpubr的任何解决方案 library(ggplot2) library(patchwork) set.seed(0) testdata <- data.frame(x=1:10, y=1:10, col=runif(10))

我正在使用包
patchwork
来组合多个
ggplot2
垂直打印。我希望每个绘图的比例直接位于彼此上方,而不管比例名称的长度。目前,天平没有相互对齐

如果可能的话,我愿意使用
ggpubr
facet\u grid()
,但我已经看到了facets,我还没有找到使用
ggpubr
的任何解决方案

library(ggplot2)
library(patchwork)

set.seed(0)
testdata <- data.frame(x=1:10, y=1:10, col=runif(10))

g1 <- ggplot(testdata, aes(x=x,y=y,col=col)) + geom_point() + 
  scale_color_gradient(name="Short")
g2 <- ggplot(testdata, aes(x=x,y=y,col=col)) + geom_point() + 
  scale_color_gradient(name="A rather longer name")
g1/g2

ggsave("testfile.tiff", units = "mm", device="tiff", 
       width=100, height=100, dpi = 100)
库(ggplot2)
图书馆(拼凑)
种子集(0)

testdata我也很想知道一个补丁参数可以解决这个问题,但我认为没有(如果我错了,请纠正我)。你可能已经注意到哈德利的答案已经有10多年的历史了,从那时起人们就一直在研究ggplot2。
ggnewscale
包解决了每个绘图具有多个刻度的问题。以下是使用多个色阶的分面方法:

库(ggplot2)
图书馆(ggnewscale)
种子集(0)

testdata使用
plot\u布局
可以“收集”图例。这将用作默认的
主题(legend.position='right')
。如果要更改图例的位置,可以在使用
&主题(legend.position='right')的plot_布局之后添加此选项,并调整位置

g1/g2 + plot_layout(guides = 'collect') # & theme(legend.position = 'right') <- adjust position here!

ggsave("testfile.tiff", units = "mm", device="tiff", 
       width=100, height=100, dpi = 100)  

g1/g2+plot_布局(guides='collect')#&主题(legend.position='right')很好,我鼓励提问者更喜欢这个答案而不是我的答案。我似乎没有看到预期的效果。运行
g1/g2+plot\u layout(guides=“collect”)
将底部导向向上移动,顶部导向向下移动,使它们更靠近,但不会改变它们的水平对齐方式。也许您的意思是
主题(legend.box.just='left')
-这似乎可以解决问题it@Miff,在我的机器上,一切都是开箱即用,但这是一次干净的会议theme(legend.box.just='left')`或
&theme(legend.position='right')
均显示与上图相同的内容。如果除标题外,所有图例都相同,则可能需要查看并重命名标题,以将它们全部合并为一个图例。或者您可以查看
guide\u区域
,在图形空间的一个位置收集所有图例。这正确地解决了问题,但缺点是比例与具有多个面的绘图在垂直方向上不匹配。这是否回答了您的问题?