使用Python制作扇形图/扇形图表

5
我想在Python中制作一个风扇图类型的线性图,类似于英格兰银行利率风扇图,如下所示:Bank of England Interest Rate fan charts

Bank of England Fan Chart

我已经相当熟练地使用matplotlib制作标准的线条/条形/散点图,但这似乎需要更加自定义的实现。

我已经在Google上搜索了一番,似乎没有任何标准的Python库可以完成这样的事情,甚至没有任何描述如何完成这项工作的代码。

如果您能提供有关如何实现此目标的任何帮助,将不胜感激。


查看matplotlib的fill_between()函数来绘制扇形,而灰色背景最简单的方法可能是使用Patch。 - cphlewis
2个回答

8
你可以使用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()

enter image description here


3

最近有一个Python的新进展,用于创建扇形图(fan plots)(详情请见以下链接):

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

这个库可以让你以类似英格兰银行的方式创建扇形图,并且还包含其他工具。


1
欢迎提供解决方案的链接,但请确保您的答案即使没有链接也很有用:添加链接周围的上下文,以便您的同行用户了解它的内容和存在目的。同时,请在引用链接的最相关部分时将其最相关的部分进行标注,以防目标页面不可用。仅包含链接的答案可能会被删除 - David Buck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接