在python中实现核密度函数,具体方法如下:
def KdePlot(x):
import seaborn as sns
import matplotlib.pyplot as plt
# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
# 绘制核密度分布直方图
plt.figure()
sns.set(style='white', # 设置边框颜色
font = 'SimHei') # 设置中文字体
sns.distplot(x, # 指定绘图数据
color='orange', # 设置绘图颜色
kde=True, # 绘制密度曲线
hist=True, # 绘制直方图
rug=True, # 绘制 rug 图(变量分布)
kde_kws = {"shade": True, # 进行面积填充
"color": 'darkorange', # 设置线条颜色
# 'linewidth': 1.0, # 设置线条粗细
'facecolor': 'gray'}, # 设置填充颜色
rug_kws = {'color': 'red', # 设置 rug 颜色
'height': 0.1}) # 设置 rug 长度
# vertical = True) # 颠倒 x-y 轴位置
plt.title('我是标题') # 设置图片标题
plt.xlabel('Label') # 设置 x 轴标签
plt.ylabel('density') # 设置 y 轴标签
plt.savefig('out.png', dpi=300) # 存储图片
plt.show()
# 读取数据
def reader(data):
import pandas as pd
file = pd.read_csv(data, sep='\s+')
data = pd.DataFrame(file, columns=['x', 'value'])
x = data['x']
y = data['value']
return x, y
# 代码执行部分
data = 'data.txt'
x, y = reader(data)
KdePlot(y)
效果图: