从X轴上具有时间戳的XML绘制数据

时间:2010-07-12 08:17:38

标签: xml r

我得到了帮助解析此站点上的以下XML文件:

<?xml version = "1.0"?>
    <Company >
   <shareprice>
    <timeStamp> 12:00:00.01</timeStamp>
    <Price>  25.02</Price>
   </shareprice>

   <shareprice>
    <timeStamp> 12:00:00.02</timeStamp>
    <Price>  15</Price>
   </shareprice>



   <shareprice>
    <timeStamp> 12:00:00.025</timeStamp>
    <Price>  15.02</Price>
    </shareprice>



    <shareprice>
    <timeStamp> 12:00:00.031</timeStamp>
    <Price>  18.25</Price>
</shareprice>



  <shareprice>
    <timeStamp> 12:00:00.039</timeStamp>
    <Price>  18.54</Price>
  </shareprice>



   <shareprice>
    <timeStamp> 12:00:00.050</timeStamp>
    <Price> 16.52</Price>
  </shareprice>


    <shareprice>
    <timeStamp> 12:00:01.01</timeStamp>
    <Price>  17.50</Price>
    </shareprice>
</Company>

我在R中使用以下代码尝试绘制数据以获取Y轴上的股价和x轴上的时间戳:

library (XML)
test.df <- xmlToDataFrame("c:/Users/user/Desktop/shares.xml")
test.df
attach(test.df)
mean(as.numeric(Price))
sd (as.numeric(Price)) 
plot(timeStamp,as.numeric(Price))

然而,由此产生的情节不是我所期望的。它返回x轴上的时间戳,但y轴的编号为1 - 7.我是否应该在R或XML文件本身中更改数据集?

2 个答案:

答案 0 :(得分:1)

您需要将x轴数据实际转换为时间对象。结合你的

library (XML)
test.df <- xmlToDataFrame("c:/Users/user/Desktop/shares.xml")
test.df
attach(test.df)
mean(as.numeric(Price))
sd (as.numeric(Price)) 

我上周在this SO question向您展示的内容(并且您需要as.character(),因为您的数据可能是作为因素出现的)

timeStampParsed <- strptime(as.character(timeStamp), "%H:%M:%OS")

之前可以通过

进行绘图
plot(timeStampParsed, as.numeric(Price))

同样对于ggplot2:首先需要将数据转换为日期类型。

最后,如果您希望其中的实际日期与今天的估算默认值不同,则需要将其添加到timeStamp文本中,例如

timeStampParsed <- strptime(paste("2010-07-01"), as.character(timeStamp), 
                            "%Y-%m%-%d %H:%M:%OS")

答案 1 :(得分:-1)

尝试来自hadley的ggplot2包 - 这很有趣。

用id日期融化你的日期,然后用qplot绘图:

test = melt(test.df,id="timestamps")
qplot(timestamp,yvalue,data=test.df,geom="line")

等。

HTH

编辑:

影响规模使用:

qplot(...) +  scale_y_continuous(limits = c(-0.25,0.25))

还要确保检查ggplot2文档(您可以在上面的链接中找到它) - 它只是两个步骤,每个其他R文档绘制出来。