ggplot2中具有不同x尺度和不同几何图形的两个数据框的图例控制

Posted

技术标签:

【中文标题】ggplot2中具有不同x尺度和不同几何图形的两个数据框的图例控制【英文标题】:Legend control with two data frames of different x-scales and different geoms in ggplot2 【发布时间】:2016-05-06 22:48:01 【问题描述】:

有人可以向我解释如何完全控制 ggplot2 中的图例,其中两个数据框具有不同的 x 比例,并呈现在两个不同的几何图形中。 'name1' 和 'name2' 是使用其他过滤函数创建的函数。

1。 为什么 geom_point 形状出现在“第 1 组”的图例中?我希望图例仅在 Group1 中显示颜色,在 Group2 中显示形状。

是否也可以重新排列图例?即 Group2 出现在行中的第一个。

df1 <- data.frame(g1 = c("a", "b", "c", "e"),
                  y1 = c(12, 8, 3, 20))
df2 <- data.frame(g1 = letters[1:5],
                  y1 = 20:24)
name1 <- "Group 1"
name2 <- "Group 2"

require(ggplot2)
ggplot(NULL, aes(x=g1, y=y1)) +
    geom_bar(data = df1, stat = "identity",
             aes(fill=factor(name1))) +
    geom_point(data = df2, stat = "identity",
               size = 5, shape = 2, aes(fill=factor(name2))) +
    theme(plot.margin = unit(c(2,1,1,1), "lines"),
                     plot.title = element_text(hjust = 0, size=18),
                     axis.title = element_text(face = "bold", size = 12),
                     legend.position = 'top',
                     legend.text = element_text(size = 12),
                     legend.title = element_blank())

【问题讨论】:

【参考方案1】:

关键是在aes()中定义fillshape。然后,您可以将不需要的 shapefill 定义为 NA

ggplot(NULL, aes(x=g1, y=y1)) +
  geom_bar(data = df1, stat = "identity", aes(fill=name2, shape=name2)) +
  geom_point(data = df2, size = 5, aes(shape=name1, fill=name1)) +
  theme(plot.margin = unit(c(2,1,1,1), "lines"),
        plot.title = element_text(hjust = 0, size=18),
        axis.title = element_text(face = "bold", size = 12),
        legend.position = 'top',
        legend.text = element_text(size = 12),
        legend.title = element_blank()) +
  scale_shape_manual(values=c(2, NA)) +
  scale_fill_manual(values=c(NA, "red")) +
  guides(fill = guide_legend(reverse = TRUE),
         shape = guide_legend(reverse = TRUE))

【讨论】:

以上是关于ggplot2中具有不同x尺度和不同几何图形的两个数据框的图例控制的主要内容,如果未能解决你的问题,请参考以下文章

Plotly.js:覆盖两个具有相同 x 轴和不同 y 轴比例的不同图形

R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(不同分组配置不同的箱体填充色+灰度尺度图)实战

ggplot2 如何显示具有相同 y 但不同 x 的两条不同的回归线

1.ggplot2——简介

在 ggplot2 中创建具有不同数据集的图例

Pyqtgraph:在同一个图形窗口中实时绘制两个图形相同的X轴但两个不同的Y轴方向相反