从两个不同的图表创建组合的单个条形图或直方图,并在第 1 年和第 2 年中并排显示条形图

Posted

技术标签:

【中文标题】从两个不同的图表创建组合的单个条形图或直方图,并在第 1 年和第 2 年中并排显示条形图【英文标题】:Creating a combined single barplot or histogram from two different charts with bars side by side for years 1 & 2 【发布时间】:2022-01-16 12:03:37 【问题描述】:

我有很多树木的疾病评分,其中包括连续两年的枯死率/感染率读数。我可以在ggplot2 中的r 中为每年创建一个直方图,但是如何创建一个并排的条形图,显示每年的读数与范围,例如0-10、10-20、20-30% 到 x 轴上的 100% 感染?

我创建了一个简单的数据框,每年有两个读数:

diseaseyear1 <- c(20, 30, 40, 50, 30, 20, 60, 85, 45, 32, 20, 40)
diseaseyear2 <- c(30, 35, 42, 45, 25, 70, 65, 90, 40, 25, 35, 50)
totaldisease <- tibble(diseaseyear1, diseaseyear2)
totaldisease
#I can plot year 1
quartz(10, 5)
year1 <- ggplot(totaldisease) +
  aes(x=diseaseyear1) +
  geom_histogram(binwidth = 10) +
  labs(title = "Disease Year 1",
       y = "count", x = "% of disease") +
  theme(text = element_text(size = 10, family = "GillSans"))
#I can also plot year 2
year1 <- ggplot(totaldisease) +
  aes(x=diseaseyear1) +
  geom_histogram(binwidth = 10) +
  labs(title = "Disease Year 1 & 2",
       y = "count", x = "% of disease") +
  theme(text = element_text(size = 10, family = "GillSans"))

#but how can I combine these two histograms (or bar plots) as side by side bars in one chart?

【问题讨论】:

您需要一个dodged 条形图还是一些facet_*?在您的示例中,第二个应该是 diseaseyear2,对吧? 我可以做 facet_grids 和 position_dodge 但我需要知道如何处理 ggplot2 中的数据框。不过还是谢谢。 【参考方案1】:

我们需要首先将我们的数据转换为长格式。这样,我们可以更好地绘制数据。

 totaldisease %>% 
  tidyr::pivot_longer(names_to = "dis", values_to = "val",
                      cols = 1:ncol(.)) %>% 
  ggplot(aes(val, fill=dis))+
  geom_histogram(binwidth = 10)+
  labs(title = "Disease Year 1 & 2",
       y = "count", x = "% of disease") +
  theme(text = element_text(size = 10, family = "GillSans"))

结果

如果你需要它躲避

totaldisease %>% 
  tidyr::pivot_longer(names_to = "dis", values_to = "val",
                      cols = 1:ncol(.)) %>% 
  ggplot(aes(val, fill=dis))+
  geom_histogram(binwidth = 10, position = "dodge")+
  labs(title = "Disease Year 1 & 2",
       y = "count", x = "% of disease") +
  theme(text = element_text(size = 10, family = "GillSans"))

【讨论】:

当您考虑一个简单的示例销售数据逐年比较等时,您会认为这是一件简单的事情。谢谢! 如何将其调整为条形的灰度颜色?例如深灰色和浅灰色? 不在 PC 上。只需在某处添加scale_fill_manual 并将您想要的颜色放入values(它可能被命名为其他名称)参数。另外,如果他们解决了问题,请考虑用打勾标记答案。谢谢。 @大卫克拉克内尔 感谢@NelsonGon。勾选应用。

以上是关于从两个不同的图表创建组合的单个条形图或直方图,并在第 1 年和第 2 年中并排显示条形图的主要内容,如果未能解决你的问题,请参考以下文章

使用 matplotlib 在单个图表上绘制两个直方图

大数据BI学习工具tableau第五期:常用图表

所见即所得的数据驱动图生成器

在 R 中创建和组合两个图 - xy 线图和条形链图

在R中的单个图上绘制两个变量的条形图和第三个变量的线图

Google图表:删除直方图条形框之间的空格