gpt4 book ai didi

python - 在 Python 的 matplotlib 中使用时间序列的百分位数设置颜色渐变

转载 作者:行者123 更新时间:2023-11-30 22:05:18 24 4
gpt4 key购买 nike

我有一个时间序列,在一年的数组大小 (365, 10000) 中,变量的每日值将超过 10,000 个。因为我将拥有大量数据(许多变量的许多时间序列),所以我希望仅保存百分位数(0、10、20、...、90、100),并在稍后的图中使用它们来设置颜色渐变显示值的密度(显然中值最暗,最小值和最大值最亮)。这样做的目的是避免保存的模拟输出中的文件大小过大,因为我将有数百万个输出需要处理。如果我能让它工作,这将显着减少文件大小。

我能够计算样本数据集的百分位数(目前仅使用 50 个值)并按附图所示绘制它们(使用大小为 365,11 的数组)。我将如何使用这些信息来设置显示颜色梯度(或值的密度)的图?这可能吗?或者还有其他方法吗?我正在使用 matplotlib...

 import numpy as np
import matplotlib.pyplot as plt

SampleData=(375-367)*np.random.random_sample((365, 50))+367
SDist=np.zeros((365,11))
for i in range(11):
for t in range(365):
SDist[t,i]=np.percentile(SampleData[t,:],i*10)

fig, (ax1) = plt.subplots(nrows=1, ncols=1, sharex=True, figsize=(8,4))
ax1.plot(np.arange(0,365,1), SDist)
ax1.set_title("SampleData", fontsize=15)
ax1.tick_params(labelsize=11.5)
ax1.set_xlabel('Day', fontsize=14)
ax1.set_ylabel('SampleData', fontsize=14)
fig.tight_layout()

Sample Data showing Percentile Lines

编辑

这是我想要的一个很好的例子(尽管显然它与我的示例数据看起来会有所不同) - 我认为它类似于扇形图:

Percentiles used to define colour gradients

最佳答案

您可以使用 matplotlib cm 对象来获取颜色图并根据值手动计算要绘制的颜色。下面的示例根据线条索引 (0-11) 计算要绘制的颜色。但是,您可以根据任何内容计算颜色,例如用于计算百分位数的观测值数量,只要您单独绘制它们并调用正确的颜色值即可。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm

n = 11 # change this value for the number of iterations/percentiles
colormap = cm.Blues # change this for the colormap of choice
percentiles = np.linspace(0,100,n)

SampleData=(375-367)*np.random.random_sample((365, 50))+367
SDist=np.zeros((365,n))
for i in range(n):
for t in range(365):
SDist[t,i]=np.percentile(SampleData[t,:],percentiles[i])

half = int((n-1)/2)

fig, (ax1) = plt.subplots(nrows=1, ncols=1, sharex=True, figsize=(8,4))
ax1.plot(np.arange(0,365,1), SDist[:,half],color='k')
for i in range(half):
ax1.fill_between(np.arange(0,365,1), SDist[:,i],SDist[:,-(i+1)],color=colormap(i/half))

ax1.set_title("SampleData", fontsize=15)
ax1.tick_params(labelsize=11.5)
ax1.set_xlabel('Day', fontsize=14)
ax1.set_ylabel('SampleData', fontsize=14)
fig.tight_layout()

结果应如下所示:

关于python - 在 Python 的 matplotlib 中使用时间序列的百分位数设置颜色渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53071379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com