用自己的祖源成分数据与其他祖源成分数据做对比
概述
编程语言:python3.8
模块:pandas
numpy
matplotlib
可选:jupyter
整体思路:读取csv
并生成热力图
便于对比
步骤:见代码上注释
代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取csv
df = pd.read_csv('e11.csv', index_col = 0, header = None)
# 设定x轴 y轴标签
ylabels = df.index
xlabels = ['非洲','欧洲','印度','马来','傣族','彝族','华东','日本','鄂伦春','雅库特','美洲']
# 选择所有数据
data = df.iloc[:,:]
# 设置支持中文画图
plt.rcParams['font.sans-serif'] = ['SimHei']
# matplotlib画热力图
fig = plt.figure(dpi=600)
ax = fig.add_subplot(1,1,1)
im = ax.imshow(data)
# 显示色块图例
plt.colorbar(im)
# 设定显示x轴 y轴标签
ax.set_xticks(np.arange(len(xlabels)))
ax.set_yticks(np.arange(len(ylabels)))
ax.set_xticklabels(xlabels)
ax.set_yticklabels(ylabels)
# 使x轴标签名向右倾斜45度以清晰显示
plt.setp(ax.get_xticklabels(), rotation=45, ha="right",
rotation_mode="anchor")
# 每个色彩块上显示数值
for i in range(len(ylabels)):
for j in range(len(xlabels)):
text = ax.text(j, i, data.iloc[i, j],
ha="center", va="center", color="w")
# 设置标题
ax.set_title("E11对比图(%)")
# 保存图片
plt.savefig('heatmap.png')
# 显示图片
plt.show()