8000 Some short lines added with `plot()` are missing in the PNG output depending on DPI · Issue #20192 · matplotlib/matplotlib · GitHub
[go: up one dir, main page]

Skip to content

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

@tskir

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0