【发布时间】:2015-11-20 19:14:08
【问题描述】:
我正在寻找使用 ggplot2 的图形帮助。 我正在针对同一个变量 C 绘制不同的变量(A 和 B)。变量 A 的值从 -20 到 20,而变量 B 的值从 -2 到 2。使用 ggplot2 时,y 轴标签更远变量 A 比变量 B 远离轴线,因为 20 比 2 占用更多空间,并且标签与数字的距离相同。
我希望两者的距离相同。是否可以定义轴标签和线之间的距离?
我尝试过使用 theme(axis.title.y = element_text(vjust=) ) 但这使得设置距离变得非常困难。
我还尝试在我的 yaxis 标题后添加“\n”,如此处 (https://groups.google.com/forum/#!topic/ggplot2/mK9DR3dKIBU) 建议的那样,但这也不能解决我的问题。
使用 PlantGrowth 数据的示例:
bp <- ggplot(PlantGrowth, aes(x=group, y=weight)) +
geom_boxplot()+
theme_classic(base_size=16) +
ylim(c(3,7))+
coord_fixed(ratio=(3)/(4))
bp1000 <- ggplot(PlantGrowth, aes(x=group, y=weight*1000)) +
geom_boxplot()+
theme_classic(base_size=16) +
ylim(c(3000,7000))+
coord_fixed(ratio=(3)/(4000))
您会看到 bp1000 的 y 轴标签(“权重”)比 bp 更远离轴,即使使用 coord_fixed() 很容易保持绘图区域相同。
如何定义 bp 的 ylabel 的距离应该与 bp1000 的距离相同(即更长)。
【问题讨论】:
-
举个例子。使它成为一个易于重现的最小示例。您可以使用您的真实数据(与
dput()共享)、模拟数据或最简单的选择,内置数据(可能是mtcars,与hp和mpg对比wt)。显示您尝试过的代码,然后我们可以帮助您解决问题并找到有效的代码。 -
如果您尝试对齐两个不同的图(这是我从问题中推断出来的),请尝试在此处搜索
rbind_gtable示例,它将解决对齐问题。 -
其他可能性是使用
facet_wrap可能与scales='free_y'设置。 -
@baptiste 我查找了 rbind_gtable ,这大约是我想要做的,除了我想独立创建绘图并保存为独立的 jpg 文件,然后我最终可以手动对齐。在 rbind_gtable 中,两个 y.labels 与 y.axis 的距离相同,我想自己设置这个距离。这是可能的还是只有当你将图绑定在一起时?
-
我相信这个answer 应该适合你