用标记仅注释特定 windows 的 imshow 热图(例如 "x")
Annotate just specific windows of imshow heatmaps with marks (e.g. "x")
如果 pandas Dataframe 的值是例如,是否可以注释 imshow 热图小于 3,然后在该特定热图中标记“x”window?
假设我有与此示例类似的数据:
d = {'col1': [1,2,1,5,3], 'col2': [3,4,1,5,2],'col3': [3,4,3,1,2],'col4': [3,4,1,2,5]}
df = pd.DataFrame(data=d)
fig = plt.figure(figsize=(6,4))
plot = plt.imshow(df)
ax = plot.axes
ax.invert_yaxis()
ax.set_xticklabels(df.columns)
我看到我们可以用相应的值注释所有热图 windows,但是我不知道如何只注释低于我给定限制的 windows 而不是用相应的值,但是例如带有标记“x”。
如果可以使用 matplotlib 热图,我可以征求建议吗?
谢谢。
- 遍历这些值,并使用
if-condition
来控制添加文本。
- 修改自how to annotate heatmap with text in matplotlib
d = {'col1': [1,2,1,5,3], 'col2': [3,4,1,5,2],'col3': [3,4,3,1,2],'col4': [3,4,1,2,5]}
df = pd.DataFrame(data=d)
fig = plt.figure(figsize=(7, 7))
plot = plt.imshow(df)
ax = plot.axes
ax.invert_yaxis()
ax.set_xticks(range(len(df.columns)), df.columns)
for y in range(df.shape[0]):
for x in range(df.shape[1]):
val = df.iloc[y, x]
if val >= 3:
val = 'x'
plt.text(x, y, val, fontsize=14,
horizontalalignment='center',
verticalalignment='center')
如果 pandas Dataframe 的值是例如,是否可以注释 imshow 热图小于 3,然后在该特定热图中标记“x”window?
假设我有与此示例类似的数据:
d = {'col1': [1,2,1,5,3], 'col2': [3,4,1,5,2],'col3': [3,4,3,1,2],'col4': [3,4,1,2,5]}
df = pd.DataFrame(data=d)
fig = plt.figure(figsize=(6,4))
plot = plt.imshow(df)
ax = plot.axes
ax.invert_yaxis()
ax.set_xticklabels(df.columns)
我看到我们可以用相应的值注释所有热图 windows,但是我不知道如何只注释低于我给定限制的 windows 而不是用相应的值,但是例如带有标记“x”。 如果可以使用 matplotlib 热图,我可以征求建议吗? 谢谢。
- 遍历这些值,并使用
if-condition
来控制添加文本。 - 修改自how to annotate heatmap with text in matplotlib
d = {'col1': [1,2,1,5,3], 'col2': [3,4,1,5,2],'col3': [3,4,3,1,2],'col4': [3,4,1,2,5]}
df = pd.DataFrame(data=d)
fig = plt.figure(figsize=(7, 7))
plot = plt.imshow(df)
ax = plot.axes
ax.invert_yaxis()
ax.set_xticks(range(len(df.columns)), df.columns)
for y in range(df.shape[0]):
for x in range(df.shape[1]):
val = df.iloc[y, x]
if val >= 3:
val = 'x'
plt.text(x, y, val, fontsize=14,
horizontalalignment='center',
verticalalignment='center')