1

这是我的 .csv 文件:

dateval,links
18/03/2013,100
19/03/2013,200
20/03/2013,300
21/03/2013,400
22/03/2013,500

这个文件被读入一个名为 date1 的对象,这是我用来绘制数据的代码:

g_range <- range(0, date1$links)
plot(date1$links, type="o", col="blue", ylim=g_range,
    axes=FALSE, ann=FALSE)
axis(1, xlab=date1$links)
box()
title(main="Additions", col.main="red", font.main=4)
axis(2, las=1, at=50*0:g_range[2])
title(xlab="Date", col.lab=rgb(0,0.5,0))
title(ylab="# Links", col.lab=rgb(0,0.5,0))

这是生成的图表:

在此处输入图像描述

不输出日期值,而是显示数字 1 - 5。如何修改代码以生成 .csv 文件中包含的日期值?我认为问题出在这条线上:axis(1, xlab=date1$links)

4

1 回答 1

1

试试这个:

axis(1,at=1:5,labels = date1$dateval)

所以,你会注意到,如果你仔细看,?axis你会发现根本没有xlab参数,但是第二个和第三个参数是:

at - 要绘制刻度线的点。非有限(无限、NaN 或 NA)值被省略。默认情况下(当为 NULL 时)计算刻度线位置,请参阅下面的“详细信息”。

标签- 这可以是一个逻辑值,指定是否要在刻度线处进行(数字)注释,或者是要放置在刻度线处的标签的字符或表达式向量。(其他对象由 as.graphicsAnnot 强制。)如果这不合逻辑,还应该提供 at 并且具有相同的长度。如果标签在强制之后的长度为零,则它与提供 TRUE 的效果相同。

但实际上也许你应该做更多这样的事情:

date1$dateval <- as.Date(date1$dateval,format = "%d/%m/%Y")
plot(date1$dateval,date1$links, type="o", col="blue", ylim=g_range, ann=FALSE,axes = FALSE)
axis(1,at=date1$dateval,labels = date1$dateval)

但与使用专门为此目的设计的包/函数相比,即使这样也是一种处理绘图日期的粗略方式。

于 2013-03-19T21:58:47.483 回答