如何使用Seaborn在同一张图中绘制数组两列数据的KDE曲线
实现方法
你可以直接两次调用sns.kdeplot()分别传入两列数据,Seaborn会自动把曲线叠加在同一张画布上,也可以把数组转为DataFrame格式后直接传入,自动生成图例区分两条曲线,两种方案代码如下:
方案1:直接传入两列数组(最简单)
import seaborn as sns import matplotlib.pyplot as plt sns.set_style('whitegrid') # 分别绘制两列的KDE曲线,指定label方便区分 sns.kdeplot(data=score_for_modelA[:,0], label='第一列得分') sns.kdeplot(data=score_for_modelA[:,1], label='第二列得分') # 显示图例 plt.legend() # 脚本运行场景下需要加下面这行显示图像 plt.show()
方案2:转为DataFrame后批量绘制(适合多列场景)
如果后续列数变多,转成pandas的DataFrame格式会更方便,不用重复写kdeplot代码:
import seaborn as sns import pandas as pd import matplotlib.pyplot as plt sns.set_style('whitegrid') # 把numpy数组转为DataFrame,给两列自定义命名 df = pd.DataFrame(score_for_modelA, columns=['模型得分A', '模型得分B']) # 直接传入整个DataFrame,seaborn会自动为所有数值列绘制KDE并生成图例 sns.kdeplot(data=df) plt.show()
两种方案都会自动把两条KDE曲线绘制在同一张图中,你可以根据需要给
kdeplot添加color、linewidth等参数自定义曲线样式。
内容的提问来源于stack exchange,提问作者Ojjasvi Puri
相关产品推荐
相关产品推荐

