我正在尝试使用ggplot和geom_area函数生成堆积线图/面积图。根据我的判断,我已将数据正确加载到R中。每次生成图时,图形都是空的(即使轴看起来正确,除了按字母顺序组织的月份除外)。
我尝试使用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"))
下面是输出:
我的错误消息为零,只是图表上没有数据绘制。
答案 0 :(得分: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"))