ggplot2用于日内财务数据

时间:2014-04-08 00:34:03

标签: r ggplot2

我有我尝试使用ggplot绘图的日内交易数据。

对于某一天,数据看起来如此(例如)......

head(q1)
time  last   bid   ask volume center
1 2014-03-19 09:30:00.480 63.74 63.39 63.74    200     11
2 2014-03-19 09:30:00.645 63.41 63.41 63.60    100     11
3 2014-03-19 09:30:00.645 63.48 63.41 63.60    100     11
4 2014-03-19 09:30:02.792 63.59 63.44 63.60    100     11
5 2014-03-19 09:30:03.023 63.74 63.44 63.75    100     12
6 2014-03-19 09:30:12.987 63.72 63.44 63.76    100     11

tail(q1)
time  last   bid   ask volume center
2116 2014-03-19 15:59:56.266 61.68 61.67 61.74    168     12
2117 2014-03-19 15:59:58.515 61.68 61.68 61.73    100     28
2118 2014-03-19 15:59:59.109 61.69 61.68 61.73    500     11
2119 2014-03-19 16:00:00.411 61.72 61.69 61.73    100     11
2120 2014-03-19 16:00:00.411 61.72 61.69 61.73    200     11
2121 2014-03-19 16:00:00.411 61.72 61.69 61.73    351     11

使用gglot可以很容易地将一天的数据可视化,我遇到麻烦的情况是在同一个地块上连接多天。如果我在数据框中连续2天q1& q2,如何在市场关闭时没有时间间隔的情况下将这些情况绘制在单个地块上,以及将一天结束与另一天结束的线路?

1 个答案:

答案 0 :(得分:0)

您可以尝试创建一个将日间转换为无缝交易时间的新转换:

 9:30          -> 0
12:00          -> approx. 0.5
16:00          -> 1
 9:30 next day -> 1

以下几行中的某些内容可以做(但我还没有尝试过):

library(scales)
trading_day_trans <- function() {
    trans_new("trading_day", trans, inv,
              pretty_breaks(), domain = domain)
}

ggplot(rbind.fill(q1, q2)) + ... + coord_trans(xtrans = "trading_day")

您需要提供trans(转换函数,时间 - >线性),inv(逆变换,线性 - >时间)和domain(时间向量)长度为2,最大 - 最大值。

改编自http://blog.ggplot2.org/post/25938265813/defining-a-new-transformation-for-ggplot2-scales