Python 热图简单定制二进制图例
我有一个带有热图图的Python 热图简单定制二进制图例,python,matplotlib,seaborn,Python,Matplotlib,Seaborn,我有一个带有热图图的True和False值的数据框: import matplotlib.pyplot as plt import seaborn as sns from matplotlib.colors import LinearSegmentedColormap df = pd.DataFrame({'A': {1: False, 2: False, 3: False, 4: True, 5: True, 6: True, 7: False, 8: False}, 'B'
True
和False
值的数据框:
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.colors import LinearSegmentedColormap
df = pd.DataFrame({'A': {1: False, 2: False, 3: False, 4: True, 5: True, 6: True, 7: False, 8: False},
'B': {1: False, 2: False, 3: True, 4: True, 5: False, 6: True, 7: True, 8: False},
'C': {1: False, 2: True, 3: False, 4: False, 5: False, 6: False, 7: True, 8: True}})
fig, ax = plt.subplots(figsize=(3,3))
cmap = sns.mpl_palette("Set2", 2)
sns.heatmap(data=df, cmap=cmap, cbar=False)
plt.xticks(rotation=90, fontsize=10)
plt.yticks(rotation=0, fontsize=10)
plt.show()
我试图在绘图之外添加一个简单的图例,其中红色为True,绿色为False,红色为missing value,绿色为non missing value。我不想在热图上看到一个连续的图例(这就是为什么cbar=False
)
我尝试了多种解决方案(也来自其他情节),但都没有成功:,,等等,但它们都太复杂,无法适应热图。我要找的东西是:
plt.legend(values=[1,0], colors=["red", "green"], label_legend=["missing value", "non missing value"])
有什么建议吗?您可以按如下方式创建一个:
导入matplotlib.pyplot作为plt
从matplotlib.patches导入修补程序
导入seaborn作为sns
作为pd进口熊猫
df=pd.DataFrame({'A':{1:False,2:False,3:False,4:True,5:True,6:True,7:False,8:False},
'B':{1:False,2:False,3:True,4:True,5:False,6:True,7:True,8:False},
‘C’:{1:False,2:True,3:False,4:False,5:False,6:False,7:True,8:True})
图,ax=plt.子批次(图尺寸=(3,3))
cmap=sns.mpl_调色板(“Set2”,2)
sns.heatmap(数据=df,cmap=cmap,cbar=False)
plt.xticks(旋转=90,字体大小=10)
plt.yticks(旋转=0,字体大小=10)
图例#句柄=[Patch(color=cmap[True],label='Missing Value'),#红色
贴片(颜色=cmap[False],标签=”非缺失值“)]#绿色
plt.legend(手柄=手柄,ncol=2,bbox-to-U锚定=[0.5,1.02],loc='lower-center',fontsize=8,手柄长度=.8)
plt.紧_布局()
plt.show()
创建一个“面片”(2D填充形状),默认情况下该面片为矩形,并且可以指定颜色
cmap[value]
其中值最好是0到1之间的数字,给出相应的颜色。请注意,“True”和“False”在用作数值时会转换为1和0。上面的代码使用“True”和“False”与数据帧进行比较,以提高可读性。还请注意,语法是cmap(value)
,带有圆括号,表示常用的matplotlib颜色映射(seaborn使用了一些不同的语法,因为它扩展了matplotlib功能)
图例的列表是要放入图例中的图形元素的列表。通常,它们是由许多函数自动创建的,但是当需要非标准的东西时,您可以使用自己的。如果“句柄”已经有了自己的标签,它们将在图例中使用。使用标签=
,可以更改它们
更多信息可以在链接文档中找到,例如。它可以工作!,谢谢你能解释一下逻辑吗?
Patch
函数做什么,以及Patch
函数的color
参数中的True
和False
值?例如,处理来自plt.legend()
的参数是什么?