什么时候使用imshow over pcolormesh?

mmd*_*ger 37 python matplotlib

我经常发现自己需要使用matplotlib在Python中创建热图样式的可视化.Matplotlib提供了几个显然做同样事情的功能. pcolormesh建议代替pcolor但是什么之间的差值(从实用的角度作为数据绘图仪)imshowpcolormesh?使用其中一个的优点/缺点是什么?在什么情况下,一方或另一方是明显的赢家?

bog*_*ron 36

从根本上说,imshow假设数组中的所有数据元素都要以相同的大小呈现,而pcolormesh/ pcolor将数据数组的元素与矩形元素相关联,矩形元素的大小可能会在矩形网格上变化.

如果您的网格元素是均匀的,那么imshow插值设置为"最近"将看起来非常类似于默认pcolormesh显示(没有可选XYargs).明显的区别在于imshowy轴将被反转(wrt pcolormesh)并保持纵横比,尽管这些特性可以改变为看起来像pcolormesh输出.

从实际的角度来看,pcolormesh如果您希望将数据阵列可视化为单元格,则会更方便,特别是当矩形网格不均匀或者您想要绘制单元格的边界/边缘时.否则,imshow如果您具有固定的像元大小,想要保持宽高比,想要控制像素插值,或者想要直接指定RGB值,则更方便.

  • +1只是添加一点:使用imshow的关键字参数(分别为`aspect ='auto'`和`origin ='lower'`)可以轻松控制y轴的方位和翻转.除了你提到的,其他主要的区别是:速度(`imshow`效率更高),显示单元格边缘的能力/能力('pcolor` /`pcolormesh`可以,'imshow`不能),并且细胞的居中(`pcolormesh`在它们的边缘上对齐细胞,而'imshow`在它们的中心对齐它们.这由`extent`kwarg或使用x&y参数到`pcolormesh`控制.) (9认同)
  • 澄清一下:`pcolor` 比 `pcolormesh` 慢,后者本身比 `imshow` 慢(至少在 Matplotlib 2.2.0 上)。 (3认同)
  • 当你的一个轴是'datetime`时,`pcolormesh`也可以很好地工作.`imshow`不喜欢这个,你必须转换为纯数字时间表示. (2认同)