Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Some short lines added with plot() are missing in the PNG output depending on DPI #20192

Description

@tskir

Bug report

Depending on DPI, a figure saved as PNG is missing some short lines.

Code for reproduction

import matplotlib
from matplotlib import pyplot as plt
import numpy as np

matplotlib.use('agg')

# Generate a set of 50 random points.
np.random.seed(0)
all_x, all_y = (np.random.rand(50) for _ in range(2))

# Scatter dots in blue.
plt.scatter(all_x, all_y, c='blue', s=2)

# Plot very short lines (length 0.001) in red with a small offset on Y.
for x, y in zip(all_x, all_y):
    plt.plot((x, x + 0.001), (y + 0.01, y + 0.01), c='red', linewidth=2)

# Save with different resolutions
plt.savefig('bug_96.png', dpi=96)
plt.savefig('bug_300.png', dpi=300)

Actual outcome

Depending on export DPI, some short segments (in red, added by plot()) are missing, while all dots (in blue, added by scatter() are always present).

At 96 DPI:
image

At 300 DPI:
image

Expected outcome

The segments should be always present, regardless of the resolution.

Matplotlib version

  • Operating system: Ubuntu 20.04.2 LTS
  • Matplotlib version (import matplotlib; print(matplotlib.__version__)): 3.4.2
  • Matplotlib backend (print(matplotlib.get_backend())): agg
  • Python version: 3.8.5

Python is installed via apt-get, Matplotlib installed system-wide using PIP.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions