如何在x轴上显示标签?
问题描述:
这里是我的.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))
这里是产生曲线图:
日期值不被输出,而不是数字1 - 5被显示。我如何修改代码以便生成.csv文件中包含的日期值?我认为问题出在这条线上:axis(1, xlab=date1$links)
?
答
试试这个:
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)
但即使是那种粗的方式来处理绘图相比,使用专门为此目的设计的包/活动的日期。
打败我。我还想补充说,OP可能希望通过将'date1 $ dateval'转换为'Date'对象来处理不均匀间隔的日期时避免将来出现问题。例如。 - 使用'as.Date(date1 $ dateval,format =“%d /%m /%Y”)' – thelatemail 2013-03-19 22:04:08
@joran日期的数量是动态的,所以上例中的date1对象包含5个日期和值,但它可能包含10个日期等...而不是使用1:5有没有一个参数值,以适应此? – 2013-03-19 22:06:55
@ user470184(1)计算数据帧中的行数。 (2)将从1到数据帧中的行数传递给at。 – joran 2013-03-19 22:08:34