我想用Python制作一个扇形图类型的线图,类似于下面的Bank of England Interest Rate fan charts
我对使用matplotlib绘制标准线/条形图/散点图非常熟悉,但是这似乎需要一些更自定义的实现。
我在Google上搜索过,似乎找不到任何Python的标准库来完成这类工作,甚至找不到任何描述如何完成这类工作的代码。
任何关于如何实现这一点的帮助都将非常感谢。

最佳答案

您可以使用matplotlib.pyplot.fillbetween来填充阴影区域。
下面的代码是一个简单的二次型的玩具例子它遍历vals并将它们添加到原始信号y中并在它们之间填充。对于val中的每个vals,它修改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()

08-25 00:03