Bry*_*mas 5 python matplotlib heatmap
我正在创建一个用于出版物的热图.该出版物仅限于黑白打印,因此我正在以灰度创建热图.我遇到的问题是热图中有一些"不适用"的正方形,我希望在视觉上区别于其他单元格.我的理解是,如果热图在刻度的两端都有颜色,那么使用numpy的蒙版数组可能(?)可以实现,并且被遮罩的字段可以简单地显示为白色.问题是,我想使用从白到黑的全光谱来说明非NA数据的范围.反正是否有区分NA细胞与其他视觉机制,如删除线?
下面是带有掩码阵列的灰度的最小示例(从此处改编).NA值可能在这里被掩盖,你只是无法分辨,因为它使用的是白色,它已被用作有效光谱高端的颜色.
import numpy as np
from pylab import *
z = rand(10, 25)
z = np.ma.masked_array(z,mask=z>0.8)
c = pcolor(z)
set_cmap('gray')
colorbar()
c = pcolor(z, edgecolors='w', linewidths=1)
axis([0,25,0,10])
savefig('plt.png')
show()
Run Code Online (Sandbox Code Playgroud)

Joe*_*ton 11
一个简单的解决方案就是孵化背景轴补丁.例如:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
np.random.seed(1977)
data = np.random.random((10,25))
data = np.ma.masked_greater(data, 0.8)
fig, ax = plt.subplots()
im = ax.pcolormesh(data, cmap=cm.gray, edgecolors='white', linewidths=1,
antialiased=True)
fig.colorbar(im)
ax.patch.set(hatch='xx', edgecolor='black')
plt.show()
Run Code Online (Sandbox Code Playgroud)
请注意,如果您不希望在空单元格之间绘制边框,则可以使用pcolor而不是pcolormesh.例如,如果我们更改该行:
im = ax.pcolormesh(data, cmap=cm.gray, edgecolors='white', linewidths=1,
antialiased=True)
Run Code Online (Sandbox Code Playgroud)
至:
im = ax.pcolor(data, cmap=cm.gray, edgecolors='white', linewidths=1)
Run Code Online (Sandbox Code Playgroud)
我们会得到:
差异很微妙 - 相邻的空单元格之间没有绘制线条pcolor.你喜欢哪种美学纯粹是个人的,但它突出了pcolor和之间的关键区别pcolormesh.
| 归档时间: |
|
| 查看次数: |
6698 次 |
| 最近记录: |