Matplotlib Ref 2D Plots
π
2026-06-24 | π Matplotlib
Matplotlib 2D Data and Statistical Plotting Functions | Online Tutorial
* * *
[ Matplotlib Reference Documentation](https://example.com/matplotlib/matplotlib-apiref.html)
Functions for 2D data display and statistical distribution visualization.
## Function Overview
| Function | Description |
| --- | --- |
| hist2d() | 2D Histogram |
| hexbin() | Hexagonal Binning (Hexbin) |
| stairs() | Step Histogram (replaces hist's step mode) |
| matshow() | Display matrix in new Figure |
| pcolor() | Pseudocolor plot (PolyCollection) |
| pcolormesh() | Pseudocolor plot (QuadMesh, better performance) |
| spy() | Sparse matrix nonzero pattern |
| figimage() | Place image at Figure level |
| ecdf() | Empirical Cumulative Distribution Function |
| violinplot() | Violin plot |
* * *
## hist2d() - 2D Histogram
matplotlib.pyplot.hist2d(x, y, bins=10, range=None, density=False, weights=None, cmin=None, cmax=None, *, **kwargs)
## Example
```python
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(42)
x = np.random.randn(5000)
y = x * 0.5 + np.random.randn(5000) * 0.5
fig,(ax1, ax2)= plt.subplots(1,2, figsize=(12,5),
layout='constrained')
# 2D Histogram
h, xedges, yedges, im = ax1.hist2d(x, y, bins=40, cmap='Blues')
fig.colorbar(im, ax=ax1, label='Count')
ax1.set_title('hist2d()')
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
# Hexagonal Binning
hb = ax2.hexbin(x, y, gridsize=30, cmap='YlOrRd')
fig.colorbar(hb, ax=ax2, label='Count')
ax2.set_title('hexbin()')
ax2.set_xlabel('X')
ax2.set_ylabel('Y')
plt.show()
```
* * *
## stairs() - Step Histogram
matplotlib.pyplot.stairs(values, edges=None, *, orientation='vertical', baseline=0, fill=False, **kwargs)
## Example
```python
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(42)
data = np.random.randn(500)
fig,(ax1, ax2)= plt.subplots(1,2, figsize=(10,4),
layout='constrained')
# hist + stairs comparison
counts, bins = np.histogram(data, bins=30)
ax1.hist(data, bins=30, alpha=0.3, color='steelblue')
ax1.stairs(counts, bins, fill=False, color='red',
linewidth=2, label='stairs outline')
ax1.set_title('stairs() outline on hist()')
ax1.legend()
# stairs with fill=True
ax2.stairs(counts, bins, fill=True, color='coral',
alpha=0.7, edgecolor='black', linewidth=1)
ax2.set_title('stairs() with fill=True')
plt.show()
```
* * *
## pcolormesh() - Pseudocolor Plot
matplotlib.pyplot.pcolormesh(*args, alpha=None, norm=None, cmap=None, vmin=None, vmax=None, shading=None, **kwargs)
## Example
```python
import matplotlib.pyplot as plt
import numpy as np
# Create 2D data
x = np.linspace(0,5,50)
y = np.linspace(0,5,50)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
fig,(ax1, ax2)= plt.subplots(1,2, figsize=(12,5),
layout='constrained')
# pcolormesh - default shading='flat' (drops last row/column)
pc1 = ax1.pcolormesh(X, Y, Z, cmap='RdYlBu',
shading='auto')
fig.colorbar(pc1, ax=ax1, label='Value')
ax1.set_title('pcolormesh()')
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
# pcolor - rendered as PolyCollection
pc2 = ax2.pcolor(X, Y, Z, cmap='RdYlBu')
fig.colorbar(pc2, ax=ax2, label='Value')
ax2.set_title('pcolor()')
ax2.set_xlabel('X')
ax2.set_ylabel('Y')
plt.show()
```
* * *
## spy() - Sparse Matrix Pattern
matplotlib.pyplot.spy(Z, precision=0, marker=None, markersize=None, aspect='equal', origin='upper', **kwargs)
## Example
```python
import matplotlib.pyplot as plt
import numpy as np
from scipy import sparse
# Create sparse matrix
np.random.seed(42)
dense = np.random.rand(50,50)
dense[dense <0.9]=0# 90% zeros
sparse_mat = sparse.csr_matrix(dense)
fig, ax = plt.subplots(figsize=(5,5), layout='constrained')
ax.spy(sparse_mat, markersize=5, color='steelblue')
ax.set_title('spy() - Sparse Matrix Pattern')
plt.show()
```
* * *
## matshow() / figimage()
matplotlib.pyplot.matshow(A, fignum=None, **kwargs) matplotlib.pyplot.figimage(X, xo=0, yo=0, alpha=None, norm=None, cmap=None, vmin=None, vmax=None, origin=None, **kwargs)
## Example
```python
import matplotlib.pyplot as plt
import numpy as np
# matshow - automatically creates new Figure to display matrix
matrix = np.random.rand(8,8)
plt.matshow(matrix, cmap='viridis')
plt.title('matshow()')
plt.colorbar(label='Value')
plt.show()
print("tutorial: matshow displayed")
```
* * *
## ecdf() - Empirical Cumulative Distribution
matplotlib.pyplot.ecdf(x, *, ax=None, complementary=False, **kwargs)
## Example
```python
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(42)
data1 = np.random.normal(0,1,200)
data2 = np.random.normal(2,0.5,200)
fig, ax = plt.subplots(figsize=(7,5), layout='constrained')
ax.ecdf(data1, label='N(0, 1)')
ax.ecdf(data2, label='N(2, 0.5)')
ax.set_title('ecdf() - Empirical CDF')
ax.set_xlabel('Value')
ax.set_ylabel('Cumulative Probability')
ax.legend()
ax.grid(True, alpha=0.3)
plt.show()
```
* * *
## violinplot() - Violin Plot
matplotlib.pyplot.violinplot(dataset, positions=None, vert=True, widths=0.5, showmeans=False, showmedians=False, showextrema=True, **kwargs)
## Example
```python
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(42)
data =[
np.random.normal(0,1,200),
np.random.normal(2,1.5,