如何将图例添加到组合图?

时间:2019-12-10 22:24:16

标签: r ggplot2

以下是数据集:

d <- tribble(
  ~priceseg,   ~price_n, ~zet_n, ~zet_n2,
     "(0,1]",     16,      2,      24,      
     "(1,3]",     33,      3,      38,
     "(3,5]",     33,      2,      25,
     "(5,6]",     17,      1,      13,
)

这是@ d.b

的可视化效果
ggplot(d) +
  geom_col(aes(x = priceseg, y = price_n), fill = ("#F1948A"), colour="black", size = 0.6) +
  geom_line(data = d, mapping = aes(x = priceseg, y = zet_n2, group = 1), colour = "#154360", size = 1) +
  geom_label(data = d, mapping = aes(x = priceseg, y = price_n, label = price_n), nudge_y = -0.6)

现在,我想在可视化中添加条形图和线条的图例,如下所示:Combined line & bar geoms: How to generate proper legend?

此外,我想在geom_label中添加%。

但是以某种方式,我无法实现它。有帮助吗?

1 个答案:

答案 0 :(得分:1)

这是一个选择

# Calculate percentage and add as column to `d`
d <- transform(d, perc = sprintf("%2.1f%%", price_n / sum(price_n) * 100))

# Plot
ggplot(d, aes(x = priceseg)) +
  geom_col(aes(y = price_n, fill = "bar_data"), colour = "black", size = 0.6) +
  geom_line(aes(y = zet_n2, group = 1, colour = "line_data"), size = 1) +
  scale_fill_manual("", values = "#F1948A") +
  scale_colour_manual("", values = "#154360") +
  geom_label(aes(y = price_n, label = perc), nudge_y = -0.6) +
  theme(
      legend.key = element_blank(),
      legend.title = element_blank(),
      legend.box = "horizontal")

您可以通过更改字符串"bar_data""line_data"来调整填充和颜色“标签”。

enter image description here