首页 > 解决方案 > 使用 ggplot2 在 R 上创建水平图:显示百分比变化

问题描述

我是这方面的初学者,我真的很迷茫。

我想创建一个水平图表,使用 ggplot2 和 R 显示不同城镇的销售额百分比变化。有人可以指导我创建图表的方法吗?

我拥有的数据看起来像这样。 在此处输入图像描述

这是我想做的图表类型。(来源:https ://harmoniccode.blogspot.com/2017/11/friday-fun-li-horizo​​n-charts.html ) 在此处输入图像描述

提前感谢您提供的任何帮助!

编辑:这是数据的示例代码:

x <- data.frame(
  "town" =c('sad','sad','sad','sad','happy','happy','happy','happy'),
  "month"=c("2017-01","2017-02","2017-03","2017-04","2017-01","2017-02","2017-03","2017-04"),
  "median_sales" = c(336500,355000,375000,395000,359000,361500,36000,375000),
  "percentage_change" = c(NA,5.4977712,5.6338028,5.3333333,NA,0.6963788,-0.4149378,  4.1666667
))

x <-
  x %>%
  mutate(month = floor_date(as_date(as.yearmon(month)), "month"))

标签: rggplot2visualization

解决方案


给出一个可以产生合理绘图的示例,并将您的示例数据作为数据而不是图像提供会很有帮助。

如果你用谷歌搜索“地平线图”,第一个答案应该会给你你需要的东西。

这是一个基于您提供的数据的简单示例:

library(latticeExtra)

sales.ts <- ts(matrix(sales$median_sales, ncol=2), names = c("sad", "happy"),
               start = c(2017, 1), frequency = 365)

horizonplot(sales.ts)

我认为这正确地呈现了您的结果,但由于您没有提供真实的数据集,因此很难说清楚。

更新:根据提供的数据,这就是答案。同样,由于您只提供了一个时间点,因此水平图可能不是您想要的。它们旨在绘制时间序列。

x.ts <- ts(matrix(x$median_sales, ncol=2), names = c("sad", "happy"),
                  start = c(2015, 1), frequency = 12)

horizonplot(x.ts)

推荐阅读