r - R:ggplot2 不接受“周”日期格式
问题描述
我在 R 中有以下形式的数据:周年(例如 21-03,2003 年的第 21 周)。在我的真实数据中,这些日期以字符格式显示。
我正在尝试在 R 中绘制这些数据,但日期格式无法正常工作。我尝试尽可能接近地重新创建数据,然后运行绘图:
library(dplyr)
library(ggplot2)
library(reshape2)
library(scales)
library(lubridate)
Table_1 <- data.frame( "Col_A" = c("21-03", "21-03", "21-03", "21-04", "21-04", "21-04", "21-05", "21-05", "21-05"),
"Col_B" = c("AAA", "AAB", "AAC", "AAA", "ABB", "AAC", "AAA", "AAB", "AAC"),
"Col_C" = c(111, 122.5, 9, 727, 66.4, 3, 992, 88, 12) )
Table_1$col_A_Date <- as.Date(Table_1$col_A, format = "%W-%y")
Table_1$Col_B = as.factor(Table_1$Col_B)
Table_1$Col_C = as.numeric(Table_1$Col_C)
melt = melt(Table_1, id = c("Col_A"))
p = ggplot(melt, aes(x = Col_A, y=value, group = 1)) + geom_line(aes(color=variable)) +
facet_grid(variable ~., scales = "free_y") + scale_x_date(date_labels = "W%-%y", date_breaks = '1 month') + theme(axis.text, x = element_text(angle = 45))
final = p + scale_y_continuous(labels = comma)
有人可以告诉我我做错了什么吗?
谢谢
解决方案
您的帖子中有一些拼写错误,并且其中包含日期的列是,col_A_Date
因此您需要将其用作in和 drop的id
变量。这是一种方法。melt
Col_A
tidyverse
library(tidyverse)
Table_1 %>%
mutate(col_A_Date = as.Date(Col_A, format = "%W-%y")) %>%
select(-Col_A) %>%
mutate(across(c(Col_B, Col_C), as.character)) %>%
pivot_longer(cols = -col_A_Date) %>%
ggplot(aes(x = col_A_Date, y=value, group = 1)) +
geom_line(aes(color=name)) +
facet_grid(name ~., scales = "free_y") +
scale_x_date(date_labels = "W%-%y", date_breaks = '1 month') +
theme(axis.text = element_text(angle = 45))
推荐阅读
- c# - 整合统一和安卓
- express - 用户身份验证中的顺序
- php - 无法在 Codeigniter 中更新数据库查询
- powerbi - 从 Power BI 中的多个网页获取数据
- ruby-on-rails - 如何将所有 PDF 与 wickedpdf 合并到一个文件中?
- git - 将 git repo 签出到 OneDrive 文件夹有什么问题?
- reactjs - 如何开玩笑地测试 redux-observable 史诗?
- python-3.x - PdfMiner:错误处理所需的页面文字:/b'begin'
- eclipse - 如何在eclipse C IDE(ubuntu)中使用grep函数
- tensorflow - Tensorboard 未显示最后一个检查点的评估结果