2013-03-19 168 views
1

这里是我的.csv文件:如何在x轴上显示标签?

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

该文件读入一个名为对象日期1,这是我使用图表中的数据代码:

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)) 

这里是产生曲线图:

enter image description here

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

回答

1

试试这个:

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

所以,你会注意到,如果你在?axis仔细看,你会看到,有没有xlab说法可言,但第二个和第三个参数是:

at - 要绘制刻度线的点。非限制性的 (无限,NaN或NA)值被省略。默认情况下(当为NULL时)计算标记位置 ,请参阅下面的'细节'。

标签 - 这可以是指定 (数值)注释是否在刻度线被制成,或标签的 字符或表达载体中,被放置在 tickpoints一个逻辑值。 (其他对象被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) 

但即使是那种粗的方式来处理绘图相比,使用专门为此目的设计的包/活动的日期。

+0

打败我。我还想补充说,OP可能希望通过将'date1 $ dateval'转换为'Date'对象来处理不均匀间隔的日期时避免将来出现问题。例如。 - 使用'as.Date(date1 $ dateval,format =“%d /%m /%Y”)' – thelatemail 2013-03-19 22:04:08

+0

@joran日期的数量是动态的,所以上例中的date1对象包含5个日期和值,但它可能包含10个日期等...而不是使用1:5有没有一个参数值,以适应此? – 2013-03-19 22:06:55

+0

@ user470184(1)计算数据帧中的行数。 (2)将从1到数据帧中的行数传递给at。 – joran 2013-03-19 22:08:34