制作 Python 扇形图/扇形图

Making a Python Fan Chart / Fan Plot

我想在 Python 中制作一个类似于 Bank of England Interest Rate fan charts 的扇形图类型的线图:

我在使用 matplotlib 绘制标准 line/bar/scatter 绘图方面非常熟练,但这似乎需要一些更自定义的实现。

我已经 Google 了,但似乎找不到 Python 的任何标准库来做这类事情,甚至找不到任何描述如何完成此操作的代码。

任何有关如何实现这一目标的帮助将不胜感激。

您可以使用 matplotlib.pyplot.fillbetween 填充阴影区域。

下面的代码是一个玩具示例,它针对简单的二次方程执行此操作。它遍历 vals 并将它们添加到您的原始信号 y 并在它们之间填充。对于 vals 中的每个 val,它修改 alpha 参数。它还绘制了信号 y 本身,这与您的 BoE 图表的处理方式不同,如果您愿意,可以通过注释掉该行来删除它。

正如我所说,这是一个玩具示例。您必须自己弄清楚如何将其用于您的数据,但希望它能证明它是可以做到的。

import matplotlib.pyplot as plt
import numpy as np

N = 1000
x = np.linspace(0, 10, N)
y = x**2
ones = np.ones(N)

vals = [30, 20, 10] # Values to iterate over and add/subtract from y.

fig, ax = plt.subplots()

for i, val in enumerate(vals):
    alpha = 0.5*(i+1)/len(vals) # Modify the alpha value for each iteration.
    ax.fill_between(x, y+ones*val, y-ones*val, color='red', alpha=alpha)

ax.plot(x, y, color='red') # Plot the original signal

plt.show()

Python 中创建扇形图(扇形图)的最新进展(参见以下 post):

https://quantgirl.blog/fan-charts/

此库允许您以与英格兰银行类似的方式创建扇形图,并且还包含其他工具。