【问题标题】:How do I reorder ggplot bar graph by year when I have multiple entries per year?当我每年有多个条目时,如何按年重新排序 ggplot 条形图?
【发布时间】:2021-07-26 20:06:13
【问题描述】:

我还没有找到适用于此的解决方案。我有一个类似于下面简单示例的数据集。我想制作一个条形图,在 x 轴上绘制 serial_no 并在 y 轴上绘制值,根据每个序列号的测试时间,条形填充不同的颜色(2019 年一种颜色,2019 年一种颜色2020)。绘制图表时,我希望先绘制所有 2019 年数据,然后绘制 2020 年数据,而不是按字母顺序绘制序列号,因此您会看到三个红色条形图,然后是三个蓝色条形图。我如何安排数据或图表来实现这一点?谢谢!

test_year <- c(2019, 2019, 2019, 2020, 2020, 2020)
serial_no <- c("a3", "a6", "a4", "a2", "a1", "a5")
value <- c(5, 4.5, 6, 3, 3.5, 6)
df <- data.frame(test_year, serial_no, value)

df %>% ggplot(aes(x = serial_no, y = value, fill = factor(test_year))) +
                 geom_col(color = "black")

【问题讨论】:

  • 试试+ facet_wrap(~ test_year)

标签: r ggplot2


【解决方案1】:

我们可以使用facet_wrapscales 作为'free_x'

library(dplyr)
library(ggplot2)
df %>% 
   ggplot(aes(x = serial_no, y = value, fill = factor(test_year))) +
                 geom_col(color = "black") + 
    facet_wrap(~ test_year, scales = 'free_x') + 
     theme(legend.title = element_blank())

【讨论】:

  • 这更接近我想要的,但不完全是。有没有办法将所有条形图绘制在一个图表上?不是两个并排的图表。使用 facet wrap 创建两个并排的图表(每年一个),其中包含不在该特定年份的序列号的空格。有没有办法在一张图表上获取所有数据?
  • @joerminer 我通过添加scales 参数更新
  • 谢谢!我认为这可以满足我的需要,尤其是在我为我的使用进行了一些格式更改之后。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多