以下是一个示例代码,展示了如何按列值映射为颜色的单元格背景着色:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 创建示例数据
data = pd.DataFrame({'A': [1, 2, 3, 4, 5],
'B': [6, 7, 8, 9, 10],
'C': [11, 12, 13, 14, 15]})
# 定义颜色映射函数
def get_color(value):
if value <= 5:
return 'red'
elif value <= 10:
return 'yellow'
else:
return 'green'
# 应用颜色映射函数到每个单元格
colors = data.applymap(get_color)
# 使用Seaborn绘制带有颜色映射的热力图
sns.heatmap(data, cmap='coolwarm', annot=True, fmt="d", cbar=False,
linewidths=0.5, linecolor='black', square=True,
mask=data.isnull(), annot_kws={"fontsize": 10, "fontweight": "bold"},
xticklabels=True, yticklabels=True, cbar_kws={"shrink": .5})
plt.title('Cell Background Color Mapping', fontsize=14, fontweight='bold')
# 将颜色应用到每个单元格
for i in range(len(data.columns)):
for j in range(len(data)):
plt.gca().get_children()[i * len(data) + j].set_facecolor(colors.iloc[j, i])
# 显示图表
plt.show()
这个示例中,首先创建了一个包含示例数据的DataFrame。然后定义了一个颜色映射函数get_color()
,该函数根据单元格的值返回相应的颜色。然后使用applymap()
函数将该函数应用到每个单元格,生成一个包含相应颜色的DataFrame。接下来,使用Seaborn库绘制带有颜色映射的热力图。最后,通过循环遍历每个单元格并将颜色应用到背景上。
在示例代码中,使用了Seaborn库的heatmap()
函数绘制热力图,其中cmap
参数指定了颜色映射,annot
参数指定是否显示数值,fmt
参数指定数值格式,cbar
参数指定是否显示颜色条,linewidths
参数指定网格线宽度,linecolor
参数指定网格线颜色,square
参数指定是否绘制正方形格子,mask
参数指定是否屏蔽缺失值,annot_kws
参数指定数值标签的字体大小和粗细,xticklabels
和yticklabels
参数指定是否显示x轴和y轴标签,cbar_kws
参数指定颜色条的长度。
上一篇:按列值选择
下一篇:按列值在R中计算数据框的平均值。