我的“评论”数据集有两列导致我出现问题 - 一个“年”的年份格式类似于“2001/02”。另一个“小时”的格式为“01-02”。每当我尝试在图表中使用这些列时,我都会看到“错误:提供给连续刻度的离散值”。我该如何解决这个问题?对不起,如果答案很明显,我是一个初学者,在其他地方找不到答案。
这是我的“年”栏的代码:
ggplot(review_data, aes(x = YEAR, colour = CAUSE)) +
geom_point() +
geom_line() +
labs(title = "Incidents",
subtitle = "By year and cause",
x = NULL,
y = "Cause") +
scale_colour_brewer(palette = "Dark2",
labels = c(),
name = NULL) +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
对于我的“约会”专栏:
ggplot(review_data) = mapping = aes(x = HOUR, fill = NUMBER) +
geom_histogram(binwidth = 1, colour = "black") +
scale_fill_brewer(palette = "Dark2", name = NULL) +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
labs(title = "Number per hour")
问题可能是您的计算机无法将日期和小时识别为日期或小时,而是将它们解释为纯文本(字符)变量。当您深入研究 R 时,有必要了解一下它的对象类型和类。
简单来说,对象的类定义了允许用它做什么以及如何处理它。
您可以使用以下方法检查变量的类别:
class(review_data$YEAR)
.
如果我猜对了你的问题,它会说“性格”。这是一个用于文本的类,也是其他所有内容的后备类。文本本质上是离散的,因此 ggplot 不允许对其进行连续计算是非常好的行为。
解决方案是将您的变量转换为合适的类,告诉计算机它代表日期或时间信息,希望 ggplot 然后能够理解这些信息。
转换过程如下:
年/月变量:
要从“2001/02”格式转换为日期,请参阅此问题,其中详细介绍了各种可能性:Converting year and month ("yyyy-mm" format) to a date?
使用 lubridate 包的一个简单方法是:
review_data$year_month <- lubridate::ym(review_data$YEAR)
对于小时/分钟变量:
使用润滑包:
review_data$hour_minute <- lubridate::hm(review_data$HOUR)
我没有检查 ggplot 是否接受
hm
课程,请告诉我。