首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Numpy/matplot:如何先绘制X%在Y%范围内?

Numpy/matplot:如何先绘制X%在Y%范围内?
EN

Stack Overflow用户
提问于 2016-03-01 07:11:34
回答 1查看 85关注 0票数 2

假设我有以下意见:

1,2,3,4,5,6,7,100

现在,我想做一个图,是如何将观测结果按百分比的方式分布的:

  • 第一个12.5%的观测是<=1 (8个中有1个)
  • 前50%的观测结果是<=4 (4 / 4)
  • 87.5%的观测结果是<=7 (8次观测中有7次)
  • 前100%的观测是<=100 (8 / 8)

我的问题:

  • 这样的情节叫什么?(每百分位数上y轴的最大观测值,x轴上的百分位数?)一种直方图?
  • 我如何在Matplotlib/Numpy中创建这样的情节?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-01 08:14:06

我不知道这样的图会被称为什么(编辑:它似乎被称为累积频率图,或类似的东西)。然而,这很容易做到。

本质上,如果您已经对数据进行了排序,那么<=值在索引i中的百分比就是(i+1)/len(data)。使用满足这一要求的arange创建x数组很容易。因此,例如:

代码语言:javascript
运行
复制
from matplotlib import pylab
import numpy as np
a = np.array([1,2,3,4,5,6,7,100])
pylab.plot( np.arange(1,len(a)+1)/len(a), a,    # This part is required
            '-', drawstyle='steps' )            # This part is stylistic

给予:

如果您希望x轴从0转到100,而不是从0转到

请注意,这对于示例数据是有效的,因为它已经被排序。如果您正在使用未排序的数据,那么首先使用np.sort对其进行排序,例如:

代码语言:javascript
运行
复制
c = np.random.randn(100)
c.sort()
pylab.plot( np.arange(1,len(c)+1)/len(c), c, '-', drawstyle='steps' )

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

https://stackoverflow.com/questions/35716746

复制
相关文章

相似问题

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