Python中的三维极坐标图

2024-09-25 16:31:26 发布

您现在位置:Python中文网/ 问答频道 /正文

背景

我有一套财务数据,我正试图分析和显示图形。该数据包括许多商品合同的高分辨率价格数据。这些合同规定了产品(有问题的实际商品)和期限(合同规定的交付日期)。因此,产品和期限的组合给出了一个完全定义的商品合同,其具有当前市场价格,如下所示

     T              Product 1                    Product 2           
 --------- ---------------------------- ---------------------------- 
  Tenor 1   $ Commodity contract price   $ Commodity contract price  
            for product 1 at tenor 1     for product 2 at tenor 1    
  Tenor 2   $ Commodity contract price   $ Commodity contract price  
            for product 1 at tenor 2     for product 1 at tenor 2    

使用一些示例数据,看看9月、10月和11月的布伦特和WTI两种原油的合同,以及当前的市场价格,我们会得出类似的结论

      T        Brent      WTI    
 ----------- --------- --------- 
  Sep 2020    $37.25    $33.40   
  Oct 2020    $38.10    $33.75   
  Nov 2020    $38.85    $34.15   

当然,这些价格并不是一成不变的,因为它们是随着市场力量而变化的,所以我们每t秒就有一个这些价格的快照。假设以上是我们的出发点,但在t+1时,布伦特价格已经移动了一美元,WTI移动了50摄氏度,所以我们的价格现在看起来像这样

    T + 1      Brent      WTI    
 ----------- --------- --------- 
  Sep 2020    $38.25    $33.90   
  Oct 2020    $39.10    $34.25   
  Nov 2020    $39.85    $34.65    

这大体上就是数据集的结构,尽管范围当然要大得多

我正在努力做什么以及我已经走了多远

我有一个具体的可视化的数据(或其子集),我一直致力于。我正在尝试制作一个我称之为3D或拉伸极坐标图的东西,它将具有不同产品的合同值,如距极坐标图中心的距离,将沿Z轴延伸以表示不同的基调,并将动画显示合同值随时间的变化。我使用ploty express的极坐标图功能实现了其中的2/3,生成了一个二维动画极坐标图,显示了6种产品在一段时间内的合同价值。以下两幅图显示了此图表中的两个帧

June14 contract price for Brent, WTI, barges, 180, 380, GC on date of 2014-02-14

June14 contract price for Brent, WTI, barges, 180, 380, GC on date of 2014-03-27

然而,据我所知,这个功能不能扩展到3d,所以我想我必须重新开始。我试图实现的目标的示意图如下所示:

Desired result

我的目标是得到一个类似于非常基本的Streamtube(参见https://plotly.com/python/streamtube-plot/?_ga=2.134282552.895284899.1586457324-1038545846.1585071729https://medium.com/plotly/streamtubes-in-plotly-with-python-and-r-a30216ef20a3)的结果,但是Streamtube的横截面多边形形状似乎总是有一个固定的半径,从中心到每个点,不像在我的用例中那样变化,所以我不相信我可以使用这个预先构建的函数。此外,这些工作使用向量场来绘制绘图,因此将对我的数据进行一些复杂且无用的反向工程,以生成正确的输入,这向我表明这是错误的路线。我相信我的最佳选择是在matplotlib或ploty中使用等高线图,但我在如何实现这一点上遇到了一些困难

如有任何建议,将不胜感激


Tags: 数据for市场产品价格productpriceat