Skip to content

Missing filled contours when using contourf #11587

Closed

Description

@hakonhagland

I am trying to plot plot a function over a 2D domain using contourf. Unfortunately, my first attempt did not work out very well. There was a region in the plot that was unexpectedly not covered by any contours. For debugging purposes, I have reduced the problem to the smallest dataset that I could find that also reveals the issue with missing filled contours:

import matplotlib.pyplot as plt
import numpy as np

v = np.array([0, 1, 2, 3])
x, y = np.meshgrid(v, v)

z = np.array([[5.5e-14, 5.5e-14, 5.5e-14, 5.5e-14],
              [2e-13, 2e-13, 2e-13, 2e-13],
              [2.2e-13, 2.2e-13, 2.2e-13, 2.2e-13],
              [0, 0,0, 0]])
fig, ax = plt.subplots()
cntr = ax.contourf(x, y, z)
fig.colorbar(cntr, ax=ax)
plt.show()

figure_1

as you can see there are missing contours from y = 1.5 to approximately y = 2.0.

Another strange thing I observed: If I normalize the z matrix by multiplying by e.g. 1e14 before plotting it works fine.

Matplotlib version

  • Operating system: Ubuntu 18.04
  • Matplotlib version: 2.2.2 (Installed with pip)
  • Matplotlib backend: TkAgg
  • Python version: 3.6.1

Note: This question was first asked on stackoverflow.com: Missing filled contours when using contourf

Activity

  1. jklymak commented on Jul 6, 2018

    @jklymak
    Member

    What happens if you specify the contour levels manually?

    Seems like a roundoff error, but I’m not sure

  2. jklymak commented on Jul 6, 2018

    @jklymak
    Member

    manual contours work fine. I can reproduce otherwise. @efiring not sure how this fits in w/ #11412?

  3. added this to the v2.2.3 milestone on Jul 6, 2018
  4. efiring commented on Jul 6, 2018

    @efiring
    Member

    It's unrelated to #11412. It is only peripherally related to contourf; the problem is in MaxNLocator. I can track it down today.

  5. self-assigned this
    on Jul 6, 2018
  6. efiring commented on Jul 6, 2018

    @efiring
    Member

    As a side note, there can be other problems with using very small or very large numbers in mpl, and they also lead to potentially confusing labeling of the colorbar, so I recommend that people scale their units before plotting. E.g., if the range is a few micrograms, plot and label with micrograms, not kilograms.

  7. added 3 commits that reference this issue on Jul 6, 2018
    443ca3f
    9d33cb5
    2b40260
  8. modified the milestones: v2.2.3, v3.1 on Jul 16, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions