如何在ggplot2中创建汇总数据帧的缩放和多面聚类条形图?

马克斯·费劳托

我正在尝试创建一个条形图网格,以显示不同物种的平均值。我正在使用iris这个问题数据集。

我汇总了数据,将其长期分解为长格式,然后尝试使用facet_wrap

iris %>%
  group_by(Species) %>%
  summarise(M.Sepal.Length=mean(Sepal.Length),
            M.Sepal.Width=mean(Sepal.Width),
            M.Petal.Length= mean(Petal.Length),
            M.Petal.Width=mean(Petal.Width)) %>%
  gather(key = Part, value = Value,  M.Sepal.Length:M.Petal.Width) %>%
ggplot(., aes(Part, Value, group = Species, fill=Species)) +
  geom_col(position = "dodge") + 
  facet_grid(cols=vars(Part)) + 
  facet_grid(cols = vars(Part))

但是,我得到的图形具有x.axis标签,这些标签串在每个构面网格上。此外,聚簇图不在每个构面框中居中。相反,它们出现在各自x轴标签的位置。我想摆脱x轴标签,将图形居中,并在每个构面内缩放图形。

这是用我的预期输出标记的结果图的图像: 我的尝试

伊恩·坎贝尔

也许这就是您要找的东西?

关键更改是:

  1. 删除Part作为映射到的变量,以x这种方式将数据绘制在每个方面的相同位置
  2. 切换到facet_wrap以便可以使用scales = "free_y"
  3. 使用labs手动添加X标题
  4. 添加theme以消除x轴刻度和刻度标签。
library(ggplot2)
library(dplyr) # Version >= 1.0.0
iris %>%
    group_by(Species) %>%
    summarise(across(1:4, mean, .names = "M.{col}")) %>%
    gather(key = Part, value = Value,  M.Sepal.Length:M.Petal.Width) %>%
ggplot(., aes(x = 1, y = Value, group = Species, fill=Species)) +
  geom_col(position = "dodge") + 
  facet_wrap(.~Part, nrow = 1, scales = "free_y") +
  labs(x = "Part") + 
  theme(axis.ticks.x = element_blank(),
        axis.text.x = element_blank()) 

在此处输入图片说明

我还自由地将您的手动呼叫切换summarise为新across功能。

您也可以按照以下方法计算误差线:

library(tidyr)
iris %>%
    group_by(Species) %>%
    summarise(across(1:4, list(M = mean, SE = ~ sd(.)/sqrt(length(.))),
                     .names = "{fn}_{col}")) %>%
    pivot_longer(-Species, names_to = c(".value","Part"),
                 names_pattern = "([SEM]+)_(.+)") %>% 
ggplot(., aes(x = 1, y = M, group = Species, fill=Species)) +
  geom_col(position = "dodge") + 
  geom_errorbar(aes(ymin = M - SE, ymax = M + SE), width = 0.5,
                position = position_dodge(0.9)) +
  facet_wrap(.~Part, nrow = 1, scales = "free_y") +
  labs(x = "Part", y = "Value") + 
  theme(axis.ticks.x = element_blank(),
        axis.text.x = element_blank()) 

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在ggplot2中制作带有自由刻度和空间的水平,多面条形图?

如何使用 ggplot2 在 R 中创建分组和堆积条形图

如何在ggplot2的geom_text中舍入条形图的数据标签?

如何在ggplot2中绘制组合的条形图和折线图

在ggplot2中限制条形图的帧

ggplot2中多列的多面条形图

如何在 R ggplot 中创建具有不同离散 X 轴的多面条形图

如何在 R 中使用 ggplot2 创建带有数据标签的非堆叠条形图?

汇总数据并在R中以条形图绘制

R中具有汇总数据的条形图

R 中的 ggplot2() 条形图和 dplyr() 分组和整体数据

如何在汇总数据上绘制堆叠条形图

如何在ggplot2中绘制(复杂的)堆叠条形图,而无需复杂的手动数据聚合

如何使用ggplot2中的每个变量创建条形图?

如何在ggplot2中做并排条形图?

如何在ggplot2中制作单个堆积的条形图

如何在R中从最高到最低对条形图进行排序?(ggplot2)

ggplot2中条形图的计数和百分比如何?[R

使用ggplot2的堆叠条形图的数据帧的保留顺序

在ggplot2中使用泡泡换条形图(geom_point)创建条形图

如何使用ggplot2创建带有主分组变量和子分组变量的条形图?

使用ggplot2创建躲避的条形图

使用 ggplot2 创建并排条形图

如何制作一个 ggplot2 条形图来显示我的数据框列中的 1 和 2 的数量?

如何缩放ggplot堆积的条形图

R 使用 ggplot2 从非数值数据创建堆积条形图

创建条形图 ggplot2 单暗数据框

使用ggplot2将条形图与原始值的成组点图[两个数据帧]成组

ggplot2 堆叠和组合条形图