Home > Software design >  matplotlib pcolor gives blank plot when data is a single column
matplotlib pcolor gives blank plot when data is a single column

Time:12-30

When I use pcolor involving meshes and data consisting of a single column, the resulting plot is just white everywhere. What am I doing wrong?

import matplotlib.pyplot as plt
from numpy import array

U = array([[0],[1]])
V = array([[0],[0]])

data = array([[0.4],[0.5]])

plt.pcolor(U,V,data)
plt.show()

This is part of a more general program where the arrays can have different sizes. Ideally, the solution should also generalize to arrays that also consist of multiple rows and columns.

CodePudding user response:

Quoting from matplotlib documentation

The dimensions of X and Y should be one greater than those of C.

In your case, X=U, Y=V and C=data. But all your arrays have shape (2,1)

Note that this quote of the documentation is quite logical. Coordinates passed (U and V here) are coordinates of the corners of the boxes. Your data contains two boxes. There are 6 corners (4 outer corners, and 2 in common).

import numpy as np
import matplotlib.pyplot as plt

U=np.array([[0, 1], [0, 1], [0, 1]])
V=np.array([[0, 0], [1, 1], [2, 2]])
data=np.array([[0.4],[0.5]])
plt.pcolor(U,V,data)
plt.show()

enter image description here

Note that in this very case (x goes from 0 to 1, for 1 cell, and y goes from 0 to 2, for 2 cells), you would achieve the exact same result by just calling plt.pcolor(data), without specifying U and V.

CodePudding user response:

import matplotlib.pyplot as plt from numpy import array

U = array([[0],[1]]) V = array([[0],[0]])

data = array([[0.4],[0.5]])

plt.pcolor(U,V,data) plt.show()

  • Related