0

我正在尝试从ggplot2. 我在一个waffle上下文中工作,所以下面的可重现示例就是这种形式。

我已经按照ggplot2 中的 Remove Plot Margins 中提供的答案进行操作,但仍然得到一个奇怪的结果。我运行以下代码,并将绘图的背景设为黄色以突出显示边距。

library("waffle")

parts <- data.frame(
  names = LETTERS[1:4],
  vals = c(80, 30, 20, 10)
)

waffle(parts, rows = 8, xlab = "Each Square = X",legend_pos = "bottom") + 
  guides(fill = guide_legend(ncol=1))  +
  theme(plot.margin = margin(0,0,0,0,unit = "cm"),
        legend.margin = margin(b=0,unit="cm"),
        plot.background = element_rect(fill="yellow"))

ggsave(file = "graphs/test.jpg")

下图是我将 jpg 粘贴到 Word 中时看到的。

在此处输入图像描述

黄色边框确认已正确指定边距,但在虚线内的图形周围获得白色边框。有没有办法避免这种情况?

4

1 回答 1

0

我正在努力解决同样的问题。在waffle功能中,您不能将方形边框的颜色更改为透明。但是您可以使用ggplot2. 检查以下代码:

library(tidyverse)

parts <- data.frame(
  names = LETTERS[1:4],
  vals = c(80, 30, 20, 10)
)

nrw = 8 # - number of rows
brd = .02 # - space between squares

parts %>%
  as_tibble() %>%
  transmute(sq = map2(names, vals, ~rep(.x, .y))) %>%
  unnest() %>%
  mutate(rn = row_number() %>% `/`(nrw) %>% ceiling()) %>%
  group_by(rn) %>%
  mutate(
    cn = row_number(),
    xmin = rn - .5 + brd,
    xmax = rn + .5 - brd,
    ymin = cn - .5 + brd,
    ymax = cn + .5 - brd
  ) %>%
  ggplot(aes(
    xmin = xmin,
    xmax = xmax,
    ymin = ymin,
    ymax = ymax,
    fill = sq
  )) +
  geom_rect() +
  coord_equal() +
  theme_void() +
  theme(plot.background = element_rect(fill = 'yellow'))

在此处输入图像描述

于 2019-02-06T08:36:16.007 回答