使用非数字轴创建R表面图表

时间:2014-03-07 18:06:15

标签: r charts plot

我正在使用R使用以下架构从csv文件中创建数据的表面图:

Date,Event Score,Location
2014-01-01,10,Louisville
2014-02-03,13,Atlanta
2014-03-10,99,Boulder

很明显,也就是说,在路易斯维尔,2014年1月1日的事件得分为10; 2014年2月2日,亚特兰大的比赛得分为13分;最后在2014年3月10日在博尔德,事件得分为99。

我有大约100,000多条这样的记录,想要生成一个表面图表,其中x轴是城市名称,y轴是日期,z轴只是正常的数值数据(“事件得分”) 。

我使用以下内容通过this site提取数据:
        HM <- read.csv("/path/to/data.csv")

并通过this post按如下方式转换日期列:
        HM$Date <- as.Date(HM$Date, "$Y-%m-%d")

我尝试过几次来自格子的线框,但无济于事。我感觉这与我理解R如何操纵变量中的数据有关。我甚至尝试使用R_Users技术绘制日期和分数,再次没有结果。以下是我如何嘲笑他的代码:
    HM <- read.csv("/path/to/data.csv")
    HM$Date <- as.Date(HM$Date, "$Y-%m-%d")
    plot(Event.Score ~ Date, HM, xaxt = "n",type = "1")
    axis(1, HM$Date, format(HM$Date, "%b %d"), cex.axis = .7)

运行plot命令后,我收到以下错误:
    Error in plot.window(...) : need finite 'xlim' values
    In addition: Warning messages:
    1: In min(x) : no non-missing arguments to min; returning Inf
    2: In max(x) : no non-missing arguments to max; returning -Inf

我正在寻找的是指向如何将轴作为名单/日期列表绘制一些更清晰的文档的方向,以及任何建议,技巧或如何实际生成它的示例。

非常感谢,随时回答问题。

1 个答案:

答案 0 :(得分:0)

只是为了跟进,万一有人偶然发现这个,为了让这个工作,我必须规范化我的原始数据。

也就是说,我不得不将数据转换为不仅有日期有事件的条目。 R不能解释零数据。因此,没有事件的一天必须手动输入0分。换句话说,我不得不转换这个数据集:

Date,Event Score,Location
2014-01-01,10,Louisville
2014-02-03,13,Atlanta
2014-03-10,99,Boulder

对于这样的事情:

Date,Event Score,Location
2014-01-01,10,Louisville
2014-01-01,0,Atlanta
2014-01-01,0,Boulder
2014-01-02,0,Louisville
2014-01-02,0,Atlanta
2014-01-02,0,Boulder
2014-01-03,0,Louisville
2014-01-03,0,Atlanta
2014-01-03,0,Boulder
...
2014-03-10,0,Louisville
2014-03-10,0,Atlanta
2014-03-10,99,Boulder

一旦我的数据以这种方式格式化,以下工作完美无瑕:

HM <- read.csv("/path/to/data.csv")
wireframe(Event.Score ~ Date + Location, HM)

此外,与levelplot不同,线框似乎不喜欢用as.Date函数解释日期。与levelplot不同,试图将其转换为日期范围要容易得多。