繁体   English   中英

使用非默认轴位置时,如何增加轴标题与绘图的距离?

[英]How to increase the distance of an axis title from the plot when using non-default axis positions?

我想增加小平面条和轴标题之间的间距。

我有一个使用facet_grid ,轴标题位于非默认位置:顶部和右侧。

axis.titlemargin参数axis.title没有影响: theme(axis.title = element_text(margin = margin(20, 20, 20, 20)))不执行任何操作。 我试过通过scale而不是theme来抑制axis.tickaxis.text ,但这没什么区别。

这是一个可重现的示例:

example.data <- data.frame(x.var = rep(-2:2, 5),
                           y.var = rep(-2:2, each=5),
                           boolean.var = as.logical(sample(1:1000, 25) %% 2))

library(ggplot2)
library(tidyr)
example.data %>% ggplot(aes(fill = boolean.var)) +
    geom_rect(xmin = -1, xmax = 1, ymin = -1, ymax = 1) +
    scale_x_continuous(name = "(X Title)", position = "top", limits = c(-0.5,0.5)) +
    scale_y_continuous(name = "(Y Title)", position = "right", limits = c(-0.5,0.5)) +
    scale_fill_discrete(guide = FALSE) +
    facet_grid(y.var ~ x.var) +
    theme(panel.margin=unit(0.25 , "lines"),
          axis.title = element_text(size = 24, margin = margin(20, 20, 20, 20)),
          axis.ticks = element_blank(),
          axis.text = element_blank(),
          axis.title = element_text(margin = margin(20, 20, 20, 20)))

这是输出:

在此处输入图片说明

在这种情况下,必须使用参数axis.title.x.topaxis.title.y.right

单独指定axis.title.xaxis.title.y ,当轴标题位于默认位置(向下,向左)时,它们仍然有效。

这是完整的示例,带有正确的间距:

example.data <- data.frame(x.var = rep(-2:2, 5),
                           y.var = rep(-2:2, each=5),
                           boolean.var = as.logical(sample(1:1000, 25) %% 2))

library(ggplot2)
library(tidyr)
example.data %>% ggplot(aes(fill = boolean.var)) +
    geom_rect(xmin = -1, xmax = 1, ymin = -1, ymax = 1) +
    scale_x_continuous(name = "(X Title)", position = "top", limits = c(-0.5,0.5)) +
    scale_y_continuous(name = "(Y Title)", position = "right", limits = c(-0.5,0.5)) +
    scale_fill_discrete(guide = FALSE) +
    facet_grid(y.var ~ x.var) +
    theme(panel.margin=unit(0.25 , "lines"),
          axis.title = element_text(size = 24, margin = margin(20, 20, 20, 20)),
          axis.ticks = element_blank(),
          axis.text = element_blank(),
          axis.title.x.top = element_text(margin = margin(1, 0, 15, 0)),
          axis.title.y.right = element_text(margin = margin(0, 1, 0, 15)))

给出以下输出:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM