-1

我正在尝试使用 ggplot 和 geom_area 函数生成堆积线/面积图。据我所知,我已将数据正确加载到 R 中。每次我生成绘图时,图表都是空的(即使轴看起来是正确的,除了月份是按 alpha 组织的)。

我尝试使用该data.frame函数来定义我的变量,但无法生成我的绘图。我还浏览了 Stack Overflow 和其他网站,但似乎没有人遇到没有错误但仍然是空白的问题。

这是我的数据集:

在此处输入图像描述

这是我目前使用的代码:

ggplot(OHV, aes(x=Month)) + 
  geom_area(aes(y=A+B+Unknown, fill="A")) + 
  geom_area(aes(y=B, fill="B")) + 
  geom_area(aes(y=Unknown, fill="Unknown"))

这是最后的输出:

在此处输入图像描述

我的错误消息为零,只是没有在我的图表上绘制数据。

4

1 回答 1

0

您的日期被解释为一个因素。你必须改造它们。

ibrary(tidyverse)
set.seed(1)
df <- data.frame(Month = seq(lubridate::ymd('2018-01-01'),
                             lubridate::ymd('2018-12-01'), by = '1 month'),
                 Unknow = sample(17, replace = T, size = 12), 
                 V1 = floor(runif(12, min = 35, max = 127)),
                 V2 = floor(runif(12, min = 75, max = 275)))

df <- df %>% 
  dplyr::mutate(Month = format(Month, '%b')) %>% 
  tidyr::gather(key = "Variable", value = "Value", -Month)

ggplot2::ggplot(df) +
  geom_area(aes(x = Month, y = Value, fill = Variable), 
            position = 'stack')

在此处输入图像描述

请注意,我曾经tidyr::gather能够以更简单的方式堆叠这些区域。

现在假设您的分析年份是 2018 年,您需要将数据框的日期转换为连续的日期,在r.

df2 <- df %>% 
  dplyr::mutate(Month = paste0("2018-", Month, "-01"),
                Month = lubridate::parse_date_time(Month,"y-b-d"),
                Month = as.Date(Month))

library(scales)
ggplot2::ggplot(df2) +
  geom_area(aes(x = Month, y = Value, fill = Variable), 
            position = 'stack') +
  scale_x_date(labels = scales::date_format("%b"))

在此处输入图像描述

于 2019-05-29T23:28:58.483 回答