首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用两个变量的列表来绘制CDF和CDF

如何用两个变量的列表来绘制CDF和CDF
EN

Stack Overflow用户
提问于 2022-01-05 11:01:13
回答 1查看 892关注 0票数 0

根据图片中显示的更新值w.r.t年绘制一个CCDF图。

数据集如下所示:

代码语言:javascript
复制
Year    Updated values
(2000 - 1)
(2001 - 159)
(2002 - 140)
(2003 - 160)
(2004 - 300)
(2005 - 378)
(2006 - 419)
(2007 - 401)
(2008 - 509)
(2009 - 610)
(2010 - 789)
(2011 - 856)
(2012 - 720)
(2013 - 860)
(2014 - 901)
(2015 - 1150)
(2016 - 1130)
(2017 - 1387)
(2018 - 1578)
(2019 - 2480)
(2020 - 3120)
(2021 - 5690)

我已经看到了很多答案,但没有找到太多关于用两个变量绘制一个CCDF图的方法。我想计算基于年份的更新频率的CCDF,并希望在x轴上以图表的形式显示年份标签。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-05 11:32:17

您可以计算一个cdf作为数据的累积和,然后除以使值在0到1之间正常化,ccdf就是1 - cdf。您可以将它们显示为曲线或条形图:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

years = np.arange(2000, 2022)
values = np.array(
    [1, 159, 140, 160, 300, 378, 419, 401, 509, 610, 789, 856, 720, 860, 901, 1150, 1130, 1387, 1578, 2480, 3120, 5690])
cdf = values.cumsum() / values.sum()
ccdf = 1 - cdf
fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(12, 4))
ax1.plot(years, cdf, label='cdf')
ax1.plot(years, ccdf, label='ccdf')
ax1.legend()

ax2.bar(years, cdf, label='cdf')
ax2.bar(years, ccdf, bottom=cdf, label='ccdf')
ax2.margins(x=0.01)
ax2.set_xticks(years)
ax2.set_xticklabels([f'{y % 100:02d}' for y in years])
ax2.legend()

plt.tight_layout()
plt.show()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70591767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档