python - 在不使用 scipy.interpolate.griddata 的情况下在 pyplot 中插入 NaN 值

标签 python numpy matplotlib scipy interpolation

我想知道如何在不插入数据本身的情况下插入 plt.contourf 图。问题是因为当我尝试 scipy.interpolate.griddata 时因为我的数据太长而花费了很多时间。

我想知道是否有一种方法可以通过 pyplot 或更快的方法来绘制没有这些空白的 NaNs 数据。

例如:

如果我有:

import numpy as np.
from numpy import nan
import matplotlib.pyplot as plt

a = np.array([[  9.,   3.,   2.,   5.,   9.,   3.,   2.,   5.],
              [  3.,  nan,   5.,   1.,   3.,  nan,   5.,   1.],
              [  5.,   8.,   2.,   9.,   5.,   8.,   2.,   9.],
              [  9.,   3.,   2.,   5.,   9.,   3.,   2.,   5.],
              [  3.,  nan,   5.,   1.,   3.,  nan,   5.,   1.],
              [  5.,   8.,   2.,   9.,   5.,   8.,   2.,   9.],
              [  9.,   3.,   2.,   5.,   9.,   3.,   2.,   5.],
              [  3.,  nan,   5.,   1.,   3.,  nan,   5.,   1.],
              [  5.,   8.,   2.,   9.,   5.,   8.,   2.,   9.],
              [  9.,   3.,   2.,   5.,   9.,   3.,   2.,   5.],
              [  3.,  nan,   5.,   1.,   3.,  nan,   5.,   1.],
              [  5.,   8.,   2.,   9.,   5.,   8.,   2.,   9.]])

xa = np.arange(8)+2

ya = -np.arange(12)

plt.figure()
plt.contourf(xa,ya,a,100)
plt.show()

我会:

enter image description here

我想更容易和更快地插入这些空白......

最佳答案

Pandas 有一个很棒的插值界面,您可以在其中执行以下操作:

import pandas as pd

a_interp = pd.DataFrame(a).interpolate(method='linear', axis=0).values
plt.contourf(xa, ya, a_interp, 100)
plt.show()

enter image description here

关于python - 在不使用 scipy.interpolate.griddata 的情况下在 pyplot 中插入 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23874352/

相关文章:

java - Osm :Relation to GeoJson转换的逻辑和代码示例

python - 对 pandas 数据框进行计数和排序

docker - 如何在 ipython 中渲染 matplotlib 图

python - 如何在Y轴不同高度上绘制列表列表?

python - 将函数应用于 pandas DataFrame 会给出值错误(只有一个参数)

Python转换街道类型缩写?

numpy - SciPy: `scipy.special.fresnel(x[, out1, out2])` 中的参数是什么?

python - 将自定义文本绘制为 xlabel

python - 如何在 Python 中的绘图上绘制网格?

python - 读取文件并搜索字符串,如果匹配,则返回 python 中的下一个单词