使用python画CDF
写在前面的话
看了一圈google 搜索画 CDF 的前10的中文输入,发现又到我出马的时候了。
这种图片应该是不能要的吧。
用很多奇奇怪怪的方法画出来的可能不太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)
这个时候我们得到的图片如下所示:
不过上面这个比较单调,而且其实实用性并不是很大。因为首先数据就不符合我们的要求了。一般要显示出某个图像的CDF,这个数据是我们自己收集的,而不是随机产生的。所以我们可以这么做:
- 首先先把我们的数据存在一个 csv 文件里面,或者是excel,都可以,看大家开心。
- 然后读取出我们的数据画图
我在之前的很多文章里面都推荐了大家使用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
下一篇: SQLServer技巧集