在ggplot(3.2.1)中,是否可以在水平图例中调整图例标签的水平对齐方式?

时间:2019-08-14 09:47:31

标签: r ggplot2 data-visualization

在ggplot 3.2.1中(R版本3.6.0(2019-04-26) 平台:x86_64-apple-darwin15.6.0(64位) 在macOS Mojave 10.14.6下运行),我无法在水平图例中调整图例标题的对齐方式。我之所以需要它,是因为标题未对齐,比相邻的键更靠近相应的键。

我正在考虑将此问题提交给我,但我甚至不确定该参数是否仅用于调整垂直对齐的图中标签的对正。 (不过,我认为这将非常有用。)

我尝试了几种设置组合,包括主题和指南设置。我发现guide_legend中的label.hjust参数优先于所有其他设置,因此下面的reprex表示该尝试。有趣的是,我有一个具有相似设置的绘图可以使用,但是我无法使用简单的合成数据来重现它。

# init, data synth --------------------------------------------------------


library(tidyverse)
library(cowplot)

# prep dummy data ---------------------------------------------------------

dat = expand.grid(cond=c('ABCDE','FGHIJ','KLMNO','PQRST'),x=1:10) %>% as_tibble() %>%
  mutate(cond=as_factor(cond),y=x+100*as.numeric(cond))


test3 = function(use.hjust) {
  pl=ggplot(dat,aes(colour=cond,x=x,y=y)) + geom_point() +
    theme(legend.position=c(.5,1),
          legend.direction = 'horizontal',
          legend.spacing.x = unit(1.5,'lines') # adding spacing to help expose problem
    ) +
    guides(colour=guide_legend(label.hjust = use.hjust,title = NULL,label.position='right',nrow=1,
                               keywidth = unit(.2,'lines'))) +
    labs(title=paste('test3, hjust=',use.hjust))
  # ggsave(paste0('test3_',use.hjust,'.png'),plot=pl,height = 7.5,width=12,units = 'cm',dpi=1200)
  pl
}

p0=test3(0) 
p.5=test3(.5)
p1=test3(1)
plot_grid(p0,p.5,p1,ncol = 1) %>% print()

reprex package(v0.3.0)于2019-08-14创建

devtools::session_info()
#> ─ Session info ──────────────────────────────────────────────────────────
#>  setting  value                       
#>  version  R version 3.6.0 (2019-04-26)
#>  os       macOS Mojave 10.14.6        
#>  system   x86_64, darwin15.6.0        
#>  ui       X11                         
#>  language (EN)                        
#>  collate  en_US.UTF-8                 
#>  ctype    en_US.UTF-8                 
#>  tz       Europe/Budapest             
#>  date     2019-08-14                  
#> 
#> ─ Packages ──────────────────────────────────────────────────────────────
#>  package     * version    date       lib source                           
#>  assertthat    0.2.1      2019-03-21 [1] CRAN (R 3.6.0)                   
#>  backports     1.1.4      2019-04-10 [1] CRAN (R 3.6.0)                   
#>  broom         0.5.2      2019-04-07 [1] CRAN (R 3.6.0)                   
#>  callr         3.3.1      2019-07-18 [1] CRAN (R 3.6.0)                   
#>  cellranger    1.1.0      2016-07-27 [1] CRAN (R 3.6.0)                   
#>  cli           1.1.0      2019-03-19 [1] CRAN (R 3.6.0)                   
#>  colorspace    1.4-1      2019-03-18 [1] CRAN (R 3.6.0)                   
#>  cowplot     * 1.0.0      2019-07-11 [1] CRAN (R 3.6.0)                   
#>  crayon        1.3.4      2017-09-16 [1] CRAN (R 3.6.0)                   
#>  curl          4.0        2019-07-22 [1] CRAN (R 3.6.0)                   
#>  DBI           1.0.0      2018-05-02 [1] CRAN (R 3.6.0)                   
#>  dbplyr        1.4.2      2019-06-17 [1] CRAN (R 3.6.0)                   
#>  desc          1.2.0      2018-05-01 [1] CRAN (R 3.6.0)                   
#>  devtools      2.1.0      2019-07-06 [1] CRAN (R 3.6.0)                   
#>  digest        0.6.20     2019-07-04 [1] CRAN (R 3.6.0)                   
#>  dplyr       * 0.8.3      2019-07-04 [1] CRAN (R 3.6.0)                   
#>  ellipsis      0.2.0.1    2019-07-02 [1] CRAN (R 3.6.0)                   
#>  evaluate      0.14       2019-05-28 [1] CRAN (R 3.6.0)                   
#>  forcats     * 0.4.0      2019-02-17 [1] CRAN (R 3.6.0)                   
#>  fs            1.3.1      2019-05-06 [1] CRAN (R 3.6.0)                   
#>  generics      0.0.2      2018-11-29 [1] CRAN (R 3.6.0)                   
#>  ggplot2     * 3.2.1      2019-08-10 [1] CRAN (R 3.6.0)                   
#>  glue          1.3.1      2019-03-12 [1] CRAN (R 3.6.0)                   
#>  gtable        0.3.0      2019-03-25 [1] CRAN (R 3.6.0)                   
#>  haven         2.1.1      2019-07-04 [1] CRAN (R 3.6.0)                   
#>  highr         0.8        2019-03-20 [1] CRAN (R 3.6.0)                   
#>  hms           0.5.0      2019-07-09 [1] CRAN (R 3.6.0)                   
#>  htmltools     0.3.6      2017-04-28 [1] CRAN (R 3.6.0)                   
#>  httr          1.4.1      2019-08-05 [1] CRAN (R 3.6.0)                   
#>  jsonlite      1.6        2018-12-07 [1] CRAN (R 3.6.0)                   
#>  knitr         1.24       2019-08-08 [1] CRAN (R 3.6.0)                   
#>  labeling      0.3        2014-08-23 [1] CRAN (R 3.6.0)                   
#>  lattice       0.20-38    2018-11-04 [1] CRAN (R 3.6.0)                   
#>  lazyeval      0.2.2      2019-03-15 [1] CRAN (R 3.6.0)                   
#>  lubridate     1.7.4      2018-04-11 [1] CRAN (R 3.6.0)                   
#>  magrittr      1.5        2014-11-22 [1] CRAN (R 3.6.0)                   
#>  memoise       1.1.0      2017-04-21 [1] CRAN (R 3.6.0)                   
#>  mime          0.7        2019-06-11 [1] CRAN (R 3.6.0)                   
#>  modelr        0.1.5      2019-08-08 [1] CRAN (R 3.6.0)                   
#>  munsell       0.5.0      2018-06-12 [1] CRAN (R 3.6.0)                   
#>  nlme          3.1-141    2019-08-01 [1] CRAN (R 3.6.0)                   
#>  pillar        1.4.2      2019-06-29 [1] CRAN (R 3.6.0)                   
#>  pkgbuild      1.0.4      2019-08-05 [1] CRAN (R 3.6.0)                   
#>  pkgconfig     2.0.2      2018-08-16 [1] CRAN (R 3.6.0)                   
#>  pkgload       1.0.2      2018-10-29 [1] CRAN (R 3.6.0)                   
#>  prettyunits   1.0.2      2015-07-13 [1] CRAN (R 3.6.0)                   
#>  processx      3.4.1      2019-07-18 [1] CRAN (R 3.6.0)                   
#>  ps            1.3.0      2018-12-21 [1] CRAN (R 3.6.0)                   
#>  purrr       * 0.3.2      2019-03-15 [1] CRAN (R 3.6.0)                   
#>  R6            2.4.0      2019-02-14 [1] CRAN (R 3.6.0)                   
#>  Rcpp          1.0.2      2019-07-25 [1] CRAN (R 3.6.0)                   
#>  readr       * 1.3.1      2018-12-21 [1] CRAN (R 3.6.0)                   
#>  readxl        1.3.1      2019-03-13 [1] CRAN (R 3.6.0)                   
#>  remotes       2.1.0      2019-06-24 [1] CRAN (R 3.6.0)                   
#>  reprex        0.3.0      2019-05-16 [1] CRAN (R 3.6.0)                   
#>  rlang         0.4.0      2019-06-25 [1] CRAN (R 3.6.0)                   
#>  rmarkdown     1.14       2019-07-12 [1] CRAN (R 3.6.0)                   
#>  rprojroot     1.3-2      2018-01-03 [1] CRAN (R 3.6.0)                   
#>  rvest         0.3.4      2019-05-15 [1] CRAN (R 3.6.0)                   
#>  scales        1.0.0      2018-08-09 [1] CRAN (R 3.6.0)                   
#>  sessioninfo   1.1.1      2018-11-05 [1] CRAN (R 3.6.0)                   
#>  stringi       1.4.3      2019-03-12 [1] CRAN (R 3.6.0)                   
#>  stringr     * 1.4.0      2019-02-10 [1] CRAN (R 3.6.0)                   
#>  testthat      2.2.1      2019-07-25 [1] CRAN (R 3.6.0)                   
#>  tibble      * 2.1.3      2019-06-06 [1] CRAN (R 3.6.0)                   
#>  tidyr       * 0.8.3      2019-03-01 [1] CRAN (R 3.6.0)                   
#>  tidyselect    0.2.5      2018-10-11 [1] CRAN (R 3.6.0)                   
#>  tidyverse   * 1.2.1.9000 2019-08-13 [1] Github (hadley/tidyverse@10f394c)
#>  usethis       1.5.1      2019-07-04 [1] CRAN (R 3.6.0)                   
#>  vctrs         0.2.0      2019-07-05 [1] CRAN (R 3.6.0)                   
#>  withr         2.1.2      2018-03-15 [1] CRAN (R 3.6.0)                   
#>  xfun          0.8        2019-06-25 [1] CRAN (R 3.6.0)                   
#>  xml2          1.2.2      2019-08-09 [1] CRAN (R 3.6.0)                   
#>  yaml          2.2.0      2018-07-25 [1] CRAN (R 3.6.0)                   
#>  zeallot       0.1.0      2018-01-28 [1] CRAN (R 3.6.0)                   
#> 
#> [1] /Library/Frameworks/R.framework/Versions/3.6/Resources/library

上面的代码绘制了一个简单的图形,其中hjust = {0,0.5,1},结果完全相同。我降低了键的宽度,以确保键不会以任何方式“压缩”或限制图例标签的对齐或定位。

正如@teunbrand指出的那样,hjust参数正确地传递给了grobs,但是以某种方式被忽略了。另外请注意,该参数对于垂直对齐的图例正确工作。

感谢任何注释或建议:)

0 个答案:

没有答案