在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)
效果圖: