使用python画CDF



写在前面的话

看了一圈google 搜索画 CDF 的前10的中文输入,发现又到我出马的时候了。
在这里插入图片描述

这种图片应该是不能要的吧。

用很多奇奇怪怪的方法画出来的可能不太OK , 所以打算写一个个人认为画出来很美观的并且还不错的方法。

个人参考的是这个链接https://stackoverflow.com/questions/39297523/plot-cdf-cumulative-histogram-using-seaborn-python

累计分布函数(CDF)

累积分布函数(Cumulative Distribution Function),又叫分布函数,是概率密度函数的积分,能完整描述一个实随机变量X的概率分布。一般以大写CDF标记,,与概率密度函数probability density function(小写pdf)相对。

累积分布函数表示:对离散变量而言,所有小于等于a的值出现概率的和

如果您还不明白,可以稍微看一下百度百科,应该很快就能明白的。

最简单,最直接画一个CDF 的方法如下所示:

import numpy as np
import seaborn as sns

x = np.random.randn(200)
kwargs = {'cumulative': True}
sns.distplot(x, hist_kws=kwargs, kde_kws=kwargs)

这个时候我们得到的图片如下所示:

在这里插入图片描述

不过上面这个比较单调,而且其实实用性并不是很大。因为首先数据就不符合我们的要求了。一般要显示出某个图像的CDF,这个数据是我们自己收集的,而不是随机产生的。所以我们可以这么做:

  1. 首先先把我们的数据存在一个 csv 文件里面,或者是excel,都可以,看大家开心。
  2. 然后读取出我们的数据画图

我在之前的很多文章里面都推荐了大家使用pandas 这个插件来加载数据,这个是真的很方便


import os
import pandas as pd  # 引入我们的pandas 模块

#path = "you data path here"
path = "data.csv"  # csv 文件存储了我们的数据
#比如是下面的这个样子的
‘’‘
data
1
2
3
4
5
...
’‘’

# read the data
df = pd.read_csv(path)
x = df['data']

# 画图
   sns.distplot(pkg, hist_kws={'cumulative': True, 'density': True}, kde_kws={'cumulative': True})
  
  plt.show()

以上就是一个基本操作

当然我们还可以在复杂一些, 比如说设置我们图片的样式,字体的大小,标题等等。。
我们现在就来实践一下


import os
import pandas as pd  # 引入我们的pandas 模块

#path = "you data path here"
path = "data.csv"  # csv 文件存储了我们的数据
#比如是下面的这个样子的
‘’‘
data
1
2
3
4
5
...
’‘’

# read the data
df = pd.read_csv(path)
x = df['data']

sns.set_style("darkgrid") # 设置画图的模式

# 设置刻度坐标的大小,这样加入我们的论文的时候可以更加的清晰,我一般是设置13-14,大家可以根据自己的图片来调整
plt.xticks(fontsize=13) 
plt.yticks(fontsize=13)

# 设置横坐标纵坐标说明
plt.xlabel('The number of x')
plt.ylabel('Proportion',fontsize=13)

###设置坐标轴的粗细
ax=plt.gca();#获得坐标轴的句柄
ax.spines['bottom'].set_linewidth(1.2);###设置底部坐标轴的粗细
ax.spines['left'].set_linewidth(1.2);####设置左边坐标轴的粗细
ax.spines['right'].set_linewidth(1.2);###设置右边坐标轴的粗细
ax.spines['top'].set_linewidth(1.2)

# 设置刻度的间距
y_major_locator=MultipleLocator(0.1)

ax.yaxis.set_major_locator(y_major_locator)

# 设置坐标轴的范围
plt.xlim(0, 3000)
plt.ylim(0, 1)
    
# 画图
sns.distplot(pkg, hist_kws={'cumulative': True, 'density': True}, kde_kws={'cumulative': True})
  
plt.show()

以上就是我们今天要说的内容了, 大家喜欢的话可以给我点个赞哟~

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程 https://www.cbedai.net/chichoxian



References

[1]https://stackoverflow.com/questions/39297523/plot-cdf-cumulative-histogram-using-seaborn-python

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值