如果用python绘制相关性热图,通常选择seaborn包,内置的heatmap函数可以直接将df.corr()生成的相关性数据帧作为参数导入,只需要设置x轴y轴的标签,热图颜色等即可,不需要对数据源进行更改。
但是如果我们用pyecharts绘制交互式的热图,就不能直接利用df.corr()的结果了,因为pyecharts热图的数据源格式是这样的:
这是一个嵌套列表,列表中的每一个元素也是列表,其前两位对应的是热图的x轴和y轴坐标索引,第三个值是需要进行展示的热图数据。这样的话,就不得不对dataframe生成的相关性矩阵数据进行转换。这里我们写一个简单的脚本实现它,如下:
import pandas as pd
def dfcorr2pyecharts(df:pd.DataFrame)->list:
"""
将dataframe相关性数据帧转换为pyecharts热图数据源
"""
corr_rows = df.shape[0]
corr_cols = df.shape[1]
return [[i, j, round(df.iloc[corr_rows-1-j,i],3)] for i in range(corr_cols) for j in range(corr_rows)]
很简单不是,来看运行一下效果,未经转换的相关性矩阵dataframe是这样的:
写一个脚本对它进行转换:
corr_df = pd.read_csv(r'你的相关系数矩阵csv文件路径',index_col=0)
print ('\n转换前的dataframe:')
print ('-------------------------------------------------------')
print (corr_df)
print ('-------------------------------------------------------')
echart_data = dfcorr2pyecharts(corr_df)
print ('转换后的Pyecharts热图数据源:')
print ('-------------------------------------------------------')
print (echart_data)
结果如下,可以放到HeatMap.add_yaxis()里使用了:
文章评论