首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将日期作为日期(而不是数字或字符)绘制在ggplot的x轴上?

如何将日期作为日期(而不是数字或字符)绘制在ggplot的x轴上?
EN

Stack Overflow用户
提问于 2019-11-23 13:35:44
回答 1查看 562关注 0票数 0

我有一个庞大的数据集,包含从2010年到2019年10个水资源中的细菌样本(4种细菌)。有些值丢失了,所以我们不需要将它们包含在绘图或分析中。

我想为所有年份的每一种资源的每一种细菌绘制一个时间序列。做这件事的最好方法是什么?

代码语言:javascript
复制
library("ggplot2")
BactData= read.csv('Råvannsdata_Bergen_2010_2018a.csv', sep='\t',header=TRUE)
summary(BactData,na.rm = TRUE)
df$Date = as.Date( df$Date, '%d/%m/%Y')
#require(ggplot2)
ggplot( data = df, aes( Date,BactData$Svartediket_CB )) + geom_line() 
#plot(BactData$Svartediket_CB,col='brown')
plot(BactData$Svartediket_CP,col='cyan')
plot(BactData$Svartediket_EC,col='magenta')
plot(BactData$Svartediket_IE,col='darkviolet')

使用绘图并不令人满意,因为x轴只是数字,而不是日期。试着使用ggplot,但得到了错误消息。我是R的初学者。

错误消息

代码语言:javascript
复制
Error in df$Date : object of type 'closure' is not subsettable

带有制表符分隔符的CVS文件的数据

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-23 13:48:50

这会起作用的

代码语言:javascript
复制
BactData = read.csv('Råvannsdata_Bergen_2010_2018a.csv', sep='\t',header=TRUE, stringsAsFactors = F)

colnames(BactData)[1] <- "Date"

library(lubridate)
BactData$Date = dmy(BactData$Date) # converts strings to date class 
ggplot(data = BactData, aes(Date, Svartediket_CB )) + geom_line()

您可以使用dplyrlubridate进行任何一年的筛选。例如,2017年:

代码语言:javascript
复制
library(dplyr)
BactData %>% filter(year(Date) == 2017) %>% 
  ggplot(aes(Date, Svartediket_CB )) + geom_line()

或者两年

代码语言:javascript
复制
library(dplyr)
BactData %>% filter(year(Date) == 2017 | year(Date) == 2018) %>% 
  ggplot(aes(Date, Svartediket_CB )) + geom_line()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59008219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档