欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用python画CDF

程序员文章站 2022-05-22 15:57:58
...

写在前面的话

看了一圈google 搜索画 CDF 的前10的中文输入,发现又到我出马的时候了。
使用python画CDF

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

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

个人参考的是这个链接https://*.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)

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

使用python画CDF

不过上面这个比较单调,而且其实实用性并不是很大。因为首先数据就不符合我们的要求了。一般要显示出某个图像的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()

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



References

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

相关标签: 【Python】