Skip to content

Add example to histogram colorbar on galleries #30107

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 31 commits into from
Jun 8, 2025
Merged
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
a49fac5
Rename evans_test.py example for Foo units class and conversion
livlutz May 24, 2025
87e8e37
Rename test_evans to unit_conversion_for_class_Foo
livlutz May 24, 2025
901cfa6
Merge branch 'matplotlib:main' into main
livlutz May 25, 2025
4df2b39
back to evans_test.py
livlutz May 25, 2025
646be10
Add colorbar histogram example to README and implement the example sc…
livlutz May 25, 2025
c81072f
Add completion message to colorbar histogram example
livlutz May 25, 2025
19a2d19
Fix newline at end of file in colorbar histogram example
livlutz May 25, 2025
9931dba
Refactor colorbar histogram example to use constrained layout and imp…
livlutz May 25, 2025
578e414
Refactor colorbar histogram example to improve layout and streamline …
livlutz May 25, 2025
0089861
Update colorbar histogram example: rename title, improve inset axes l…
livlutz May 26, 2025
bf6f2e8
Plotting a different database + refactor bins to np.linespace(-1,1,11…
livlutz May 26, 2025
9c5c859
Refactor colorbar histogram example: streamline histogram calculation…
livlutz May 26, 2025
96781f3
Refactor colorbar histogram example: adjust inset histogram positioni…
livlutz May 26, 2025
6062d91
Update histogram bar height calculation for improved visualization
livlutz May 27, 2025
69a388f
Update colorbar_histogram.py
livlutz May 27, 2025
b3d7b42
Refactor inset histogram cleanup: remove unnecessary comment and enha…
livlutz May 27, 2025
8004742
Refactor inset histogram cleanup: remove unnecessary comment to enhan…
livlutz May 27, 2025
f3e8acf
Using a new histogram + swapping blue and red in cmap
livlutz May 27, 2025
cf4f62c
Fix histogram range and improve image display: adjust x range and rem…
livlutz May 27, 2025
767ec0e
Update galleries/examples/color/colorbar_histogram.py
livlutz May 28, 2025
fdb37d4
Remove unnecessary subplot adjustment for image positioning in colorb…
livlutz May 28, 2025
31cf67d
Remove trailing whitespace + adding new layout as constrained
livlutz May 30, 2025
e19c7c6
Merge branch 'matplotlib:main' into histogram-colorgram
livlutz Jun 6, 2025
e02b014
Refactor histogram calculation and cleanup: simplify midpoints calcul…
livlutz Jun 6, 2025
beda46a
Adding newline at the end of file
livlutz Jun 6, 2025
af473b9
organising imports with isort
livlutz Jun 6, 2025
a41d546
Changing comment style + simpler instructions
livlutz Jun 6, 2025
685e2d1
Refactor example description and improve comment consistency in color…
livlutz Jun 7, 2025
09d65d5
Fix normalization and y-ticks in colorbar histogram example
livlutz Jun 7, 2025
0800664
Fix comment inconsistencies and remove unnecessary lines in colorbar_…
livlutz Jun 7, 2025
3ee4a67
Fix histogram bin edges when plotting histogram
livlutz Jun 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions galleries/examples/color/colorbar_histogram.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
"""
=====================
Histogram as colorbar
=====================

This example demonstrates how to use a colored histogram instead of a colorbar
to not only show the color-to-value mapping, but also visualize the
distribution of values.
"""

import matplotlib.pyplot as plt
import numpy as np

import matplotlib.colors as mcolors

# surface data
delta = 0.025
x = y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-(((X + 1) * 1.3) ** 2) - ((Y + 1) * 1.3) ** 2)
Z2 = 2.5 * np.exp(-((X - 1) ** 2) - (Y - 1) ** 2)
Z = Z1**0.25 - Z2**0.5

# colormap & normalization
bins = 30
cmap = plt.get_cmap("RdYlBu_r")
bin_edges = np.linspace(Z.min(), Z.max(), bins + 1)
norm = mcolors.BoundaryNorm(bin_edges, cmap.N)

# main plot
fig, ax = plt.subplots(layout="constrained")
im = ax.imshow(Z, cmap=cmap, origin="lower", extent=[-3, 3, -3, 3], norm=norm)

# inset histogram
cax = ax.inset_axes([1.18, 0.02, 0.25, 0.95]) # left, bottom, width, height

# plot histogram
counts, _ = np.histogram(Z, bins=bin_edges)
midpoints = (bin_edges[:-1] + bin_edges[1:]) / 2
distance = midpoints[1] - midpoints[0]
cax.barh(midpoints, counts, height=0.8 * distance, color=cmap(norm(midpoints)))

# styling
cax.spines[:].set_visible(False)
cax.set_yticks(bin_edges)
cax.tick_params(axis="both", which="both", length=0)

plt.show()