我知道这个问题可能是陈词滥调,但我很难做到这一点.
我的数据集采用以下格式:
Date Visits
11/1/2010 696537
11/2/2010 718748
11/3/2010 799355
11/4/2010 805800
11/5/2010 701262
11/6/2010 531579
11/7/2010 690068
11/8/2010 756947
11/9/2010 718757
11/10/2010 701768
11/11/2010 820113
11/12/2010 645259
我想创建一个时间序列图,x轴代表时间和y轴vists.另外,我想用日期标记x轴.我使用的代码如下:
dm$newday = as.POSIXct(strptime(dm$Day, format="%Y-%m-%d"))
plot(as.Date(dm$day),dm$visits)
axis.Date(1,Day,at=seq(as.Date("2010/10/30"), as.Date("2011/01/29"),by="days"))
Run Code Online (Sandbox Code Playgroud)
G. *_*eck 53
1)由于时间是日期,一定要使用"Date"课程,而不是"POSIXct"或"POSIXlt".请参阅R News 4/1获取建议,并尝试Lines在最后的注释中定义.这里没有使用包裹.
dm <- read.table(text = Lines, header = TRUE)
dm$Date <- as.Date(dm$Date, "%m/%d/%Y")
plot(Visits ~ Date, dm, xaxt = "n", type = "l")
axis(1, dm$Date, format(dm$Date, "%b %d"), cex.axis = .7)
Run Code Online (Sandbox Code Playgroud)
使用text = Lines只是为了保持示例自包含,实际上它将被替换为类似的东西"myfile.dat".(图片后继续)
2)由于这是一个时间序列,您可能希望使用时间序列表示,给出稍微简单的代码:
library(zoo)
z <- read.zoo(text = Lines, header = TRUE, format = "%m/%d/%Y")
plot(z, xaxt = "n")
axis(1, dm$Date, format(dm$Date, "%b %d"), cex.axis = .7)
Run Code Online (Sandbox Code Playgroud)
根据您想要的情节看起来,仅plot(Visits ~ Date, dm)在第一种情况下使用或plot(z)在第二种情况下axis完全抑制命令就足够了.
注意:
Lines <- "Date Visits
11/1/2010 696537
11/2/2010 718748
11/3/2010 799355
11/4/2010 805800
11/5/2010 701262
11/6/2010 531579
11/7/2010 690068
11/8/2010 756947
11/9/2010 718757
11/10/2010 701768
11/11/2010 820113
11/12/2010 645259"
Run Code Online (Sandbox Code Playgroud)
Pra*_*ani 20
我喜欢使用ggplot2这类东西:
df$Date <- as.Date( df$Date, '%m/%d/%Y')
require(ggplot2)
ggplot( data = df, aes( Date, Visits )) + geom_line()
Run Code Online (Sandbox Code Playgroud)

您的代码有很多错误.
dm$Day和dm$day.可能不是一回事Date和Visits.所以,你会访问它们(我猜),作为dm$Date和dm$Visits%Y-%m-%d这样做%m/%d/%Y以下代码应绘制您想要的内容:
dm$newday = as.Date(dm$Date, "%m/%d/%Y")
plot(dm$newday, dm$Visits)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
208785 次 |
| 最近记录: |