plt.axis():如何“紧”轴隐藏边界NaNs?

时间:2014-05-25 18:27:20

标签: python matplotlib axis

我有一个数组:

a = array([
    [ nan,   2.,   3.,   2.,   5.,   3.],
    [ nan,   4.,   3.,   2.,   5.,   4.],
    [ nan,   2.,   1.,   2.,   3.,   2.]
])

我制作了一个填充轮廓:

plt.contourf(a)

所以,我会拥有它:

Filled Contour

当我执行plt.axis('tight')时没有任何反应,但我想隐藏边界NaN值。怎么做容易?

3 个答案:

答案 0 :(得分:1)

您可以使用nanmin和nanmax设置最小和最大xlim:

import numpy as np
a = np.array([
    [ np.nan,   2.,   3.,   2.,   5.,   3.],
    [ np.nan,   4.,   3.,   2.,   5.,   4.],
    [ np.nan,   2.,   1.,   2.,   3.,   2.]
])
import pylab as plt
xmax= np.nanmax(a)
xmin=np.nanmin(a)
plt.xlim(xmin,xmax)
plt.contourf(a)
plt.show()

enter image description here

答案 1 :(得分:0)

如果数组中的NaN位于示例中的列中,则可以执行以下操作:

import matplotlib.pyplot as plt

a = array([
    [ nan,   2.,   3.,   2.,   5.,   3.],
    [ nan,   4.,   3.,   2.,   5.,   4.],
    [ nan,   2.,   1.,   2.,   3.,   2.]
])

b = np.delete(a,0,1)

plt.contourf(b)

答案 2 :(得分:0)

嗯..

如果我在开始和结束时考虑os osNs列,我尝试了它并且它起作用了:

x = np.arange(0,a.shape[1])
plt.xlim([x[~np.isnan(a[0,:])][0],x[~np.isnan(a[0,:])][-1]])