Repository navigation
Update to docs with regards to colorbar and colorizer #30112
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
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -8,10 +8,11 @@ | |
| This tutorial shows how to build and customize standalone colorbars, i.e. | ||
| without an attached plot. | ||
|
|
||
| A `~.Figure.colorbar` needs a "mappable" (`matplotlib.cm.ScalarMappable`) | ||
| object (typically, an image) which indicates the colormap and the norm to be | ||
| used. In order to create a colorbar without an attached image, one can instead | ||
| use a `.ScalarMappable` with no associated data. | ||
| A `~.Figure.colorbar` needs a "mappable" (`matplotlib.colorizer.ColorizingArtist`) | ||
| object (typically, an image) which contains a colorizer | ||
| (`matplotlib.colorizer.Colorizer`) that holds the data-to-color pipeline (norm and | ||
| colormap). In order to create a colorbar without an attached image, one can instead | ||
| use a `.ColorizingArtist` with no associated data. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think you can be more straightforward. ColorizingArtist is the base class for everything that "can be colormapped". Directly instruct to create the base class and pass it to colorbar. This the detour "typically subclasses with data, like image, but you can create without data" is not needed for the context of creating a standalone colorbar.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thank you for the feedback, does the following read more easily: """
A `~.Figure.colorbar` requires a `matplotlib.colorizer.ColorizingArtist` which
contains a `matplotlib.colorizer.Colorizer` that holds the data-to-color pipeline
(norm and colormap). To create a colorbar without an attached plot one can
use a `.ColorizingArtist` with no associated data.
"""(and should we remove the last sentence?)
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is okish. Maybe an improvement would be to switch the last sentence for
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done :) |
||
| """ | ||
|
|
||
| import matplotlib.pyplot as plt | ||
|
|
@@ -23,17 +24,21 @@ | |
| # ------------------------- | ||
| # Here, we create a basic continuous colorbar with ticks and labels. | ||
| # | ||
| # The arguments to the `~.Figure.colorbar` call are the `.ScalarMappable` | ||
| # (constructed using the *norm* and *cmap* arguments), the axes where the | ||
| # colorbar should be drawn, and the colorbar's orientation. | ||
| # The arguments to the `~.Figure.colorbar` call are a `.ColorizingArtist`, | ||
| # the axes where the colorbar should be drawn, and the colorbar's orientation. | ||
| # To crate a `.ColorizingArtist` one must first make `.Colorizer` that holds the | ||
| # desired *norm* and *cmap*. | ||
| # | ||
| # | ||
| # For more information see the `~matplotlib.colorbar` API. | ||
|
|
||
| fig, ax = plt.subplots(figsize=(6, 1), layout='constrained') | ||
|
|
||
| norm = mpl.colors.Normalize(vmin=5, vmax=10) | ||
|
|
||
| fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap="cool"), | ||
| colorizer = mpl.colorizer.Colorizer(norm=norm, cmap="cool") | ||
|
|
||
| fig.colorbar(mpl.colorizer.ColorizingArtist(colorizer), | ||
| cax=ax, orientation='horizontal', label='Some Units') | ||
|
|
||
| # %% | ||
|
|
@@ -47,7 +52,9 @@ | |
|
|
||
| fig, ax = plt.subplots(layout='constrained') | ||
|
|
||
| fig.colorbar(mpl.cm.ScalarMappable(norm=mpl.colors.Normalize(0, 1), cmap='magma'), | ||
| colorizer = mpl.colorizer.Colorizer(norm=mpl.colors.Normalize(0, 1), cmap='magma') | ||
|
|
||
| fig.colorbar(mpl.colorizer.ColorizingArtist(colorizer), | ||
| ax=ax, orientation='vertical', label='a colorbar label') | ||
|
|
||
| # %% | ||
|
|
@@ -65,7 +72,9 @@ | |
| bounds = [-1, 2, 5, 7, 12, 15] | ||
| norm = mpl.colors.BoundaryNorm(bounds, cmap.N, extend='both') | ||
|
|
||
| fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap="viridis"), | ||
| colorizer = mpl.colorizer.Colorizer(norm=norm, cmap='viridis') | ||
|
|
||
| fig.colorbar(mpl.colorizer.ColorizingArtist(colorizer), | ||
| cax=ax, orientation='horizontal', | ||
| label="Discrete intervals with extend='both' keyword") | ||
|
|
||
|
|
@@ -94,8 +103,10 @@ | |
| bounds = [1, 2, 4, 7, 8] | ||
| norm = mpl.colors.BoundaryNorm(bounds, cmap.N) | ||
|
|
||
| colorizer = mpl.colorizer.Colorizer(norm=norm, cmap=cmap) | ||
|
|
||
| fig.colorbar( | ||
| mpl.cm.ScalarMappable(cmap=cmap, norm=norm), | ||
| mpl.colorizer.ColorizingArtist(colorizer), | ||
| cax=ax, orientation='horizontal', | ||
| extend='both', | ||
| spacing='proportional', | ||
|
|
@@ -116,8 +127,10 @@ | |
| bounds = [-1.0, -0.5, 0.0, 0.5, 1.0] | ||
| norm = mpl.colors.BoundaryNorm(bounds, cmap.N) | ||
|
|
||
| colorizer = mpl.colorizer.Colorizer(norm=norm, cmap=cmap) | ||
|
|
||
| fig.colorbar( | ||
| mpl.cm.ScalarMappable(cmap=cmap, norm=norm), | ||
| mpl.colorizer.ColorizingArtist(colorizer), | ||
| cax=ax, orientation='horizontal', | ||
| extend='both', extendfrac='auto', | ||
| spacing='uniform', | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.