【发布时间】:2023-03-08 01:25:01
【问题描述】:
我正在使用 R 编程语言。我使用了“rehsape”库中的 melt() 函数,因此我的数据看起来像这样:
library(dplyr)
library(ggplot2)
library(reshape2)
library(scales)
Table_1 <- data.frame(
"Col_A" = c("2002-01", "2002-01", "2002-01", "2002-02", "2002-02", "2002-02", "2002-03", "2002-03", "2002-03"),
"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)
)
Col_A 是格式为:年-月的日期
表格中的列格式如下:
Table_1$Col_A = as.character(Table_1$Col_A)
Table_1$Col_B = as.factor(Table_1$Col_B)
Table_1$Col_C = as.numeric(Table_1$Col_C)
从这里开始,我使用了 melt() 函数:
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")
我的真实数据有点复杂,我正在尝试修改日期(我有很多日期),以免它们显得杂乱无章。
我正在尝试:
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 = "m%-%y", date_breaks = '1 month') + theme(axis.text, x = element_text(angle = 45))
接着是:
final = p + scale_y_continuous(labels = comma)
但是,我收到了这个错误:Error: Invalid input: date_trans works with objects of class Date only
谁能告诉我我做错了什么? 谢谢
【问题讨论】:
-
您没有任何日期值。
2002-01应该是约会吗?它需要月、日、年作为日期。 R 作为日期的单独数据类型,因此您需要从字符转换为该数据类型。那些年/月?您想假设每个值都来自本月的第一天吗? -
我认为您的日期存储为字符而不是专用的日期/日期时间类,因此可能值得转换这些。
标签: r date ggplot2 data-visualization