Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的现金流图?_R_Ggplot2 - Fatal编程技术网

R中的现金流图?

R中的现金流图?,r,ggplot2,R,Ggplot2,在解释金融工程中的衍生品时,经常使用现金流图。它显示了不同时间的回报。我在网上找不到一个很好的例子,但它看起来像这样: 我想使用ggplot2制作大致相同的东西。我的想法是使用一个堆叠,其中零轴在中间的某个地方。有人知道怎么做吗 以下是一些示例数据: data.frame(time=c(1, 2, 3), positive=c(5, 0, 4), negative=c(-2, 0, 0)) 编辑: 感谢哈德利的回答;生成的图像如下所示: 对于框,它看起来像: 我曾向Khanh建议过一次。这

在解释金融工程中的衍生品时,经常使用现金流图。它显示了不同时间的回报。我在网上找不到一个很好的例子,但它看起来像这样:

我想使用
ggplot2
制作大致相同的东西。我的想法是使用一个堆叠,其中零轴在中间的某个地方。有人知道怎么做吗

以下是一些示例数据:

data.frame(time=c(1, 2, 3), positive=c(5, 0, 4), negative=c(-2, 0, 0))
编辑:

感谢哈德利的回答;生成的图像如下所示:

对于框,它看起来像:


我曾向Khanh建议过一次。这可能是您的第一个补丁:)

一个问题,我认为,你可能不希望全轴在任何一方——长期零点在X轴上会太少,而对于标准债券来说,优惠券和票面金额之间的不同支付也可能看起来很奇怪。

再说一次,这是R,财富(“尤达”)仍然适用。

这里有一个尝试

ggplot(df, aes(time, xend = time)) + 
  geom_segment(aes(y = 0, yend = positive, colour = "positive"),
    position = "stack", arrow = arrow()) + 
  geom_segment(aes(y = 0, yend = negative, colour = "negative"), 
    position = "stack", arrow = arrow()) + 
  scale_colour_manual("Direction", 
    values = c("negative" = "red", "positive" = "black"))

但是我认为你真的需要自己堆叠这些值,因为你不能用ggplot2获得足够的控制权。

好主意。让我们看看我们想出了什么,然后想想补丁。太好了!谢谢你,哈德利。虽然我不清楚,但实际上我想要“条”,但我只是将您的解决方案改为使用
geom_rect
,它就可以工作了<代码>ggplot(df,aes(time,xend=time))+geom_rect(aes(xmin=time,xmax=time+1,ymin=0,ymax=positive,fill=“positive”)+geom_rect(aes(xmin=time,xmax=time+1,ymin=0,ymax=负数,fill=“负数”)+scale_手动(“方向”,数值=c(“负数”=“红色”,“正数”=“黑色”)