【问题标题】:How to make a Grouped Bar chart for multiple columns? [duplicate]如何为多个列制作分组条形图? [复制]
【发布时间】:2022-01-10 05:28:22
【问题描述】:

我想制作一个分组条形图,其中每个月都聚集在一起,然后在该集群中每个变量都有自己的条形图。因此,对于下面的示例代码(我的实际数据超过 2 行),我想要一个用于 x1、x2、x3 和 x4 的条形,然后在 1 月份再次显示 x1、x2、x3 和 x4 的条形二月等

x1 x2 x3 x4 Month
7.8 3.4 9.8 2.1 Jan
5.5 2.3 6.1 0.7 Jan

我一定遗漏了一些相当明显的东西,但我不知道如何使每列成为条形。这是我目前为止最好的猜测,

Levels = c(x1, x2, x3, x4)
Plot <- ggplot(data, aes(x = Month, fill = Levels)) + geom_col(position = 'dodge')

这显然是错误的,因为 Levels 没有以任何方式连接到数据。

任何想法都将不胜感激。

【问题讨论】:

  • 第二行应该是月=二月吗?你有没有做过任何搜索?我猜关于分组条形图的先前问题的数量是巨大的。
  • 不,每个月都有多行。我没有找到任何具体的列子组。
  • 可能是因为他们都被告知数据应该“长”而不是“宽”。
  • 您可以选择多种方式来回答,我不确定您为什么选择居高临下。没有人告诉我数据应该“长”而不是“宽”,所以如果您不介意解释您的意思,我将不胜感激。
  • 我选择了我的回复方式,因为 StackOverflow 试图让新用户在发布问题之前进行搜索。先前问题的重复不会增加网站的价值。 SO 还期望在自学之前付出努力。我很确定,任何值得 ggplot2 绘图入门的教程一开始都会说数据需要位于数据框中,这些数据框与“长”配置中的数据一起排列。它应该向还不熟悉数据库术语和“第一范式”的人解释这意味着什么。

标签: r graph data-visualization


【解决方案1】:
library(tidyverse)
df %>% 
  pivot_longer(
    -Month
  ) %>% 
  ggplot(aes(x = Month, y = value, fill=name)) + 
  geom_bar(position="dodge", stat="identity")

数据:

df <- structure(list(x1 = c(7.8, 5.5, 4.8, 5.5), x2 = c(3.4, 2.3, 6.4, 
7.3), x3 = c(9.8, 6.1, 9.8, 3.1), x4 = c(2.1, 0.7, 2.1, 7.7), 
    Month = c("Jan", "Jan", "Feb", "Feb")), class = "data.frame", row.names = c(NA, 
-4L))

【讨论】:

  • 我的实际数据集远大于 2 行,有没有办法概括这一点,这样我就不必列出变量了?
  • 试试你的数据集,它应该可以工作,与行数无关。我刚刚添加了两行作为示例。
猜你喜欢
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 2019-08-16
  • 2021-06-09
  • 2017-05-23
  • 2018-01-24
相关资源
最近更新 更多