Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

PatchCollection edges incorrect when clip path is set #15946

Open
@QuLogic

Description

@QuLogic

Bug report

Bug summary

Cartopy has a mostly-superfluousGeoAxes.background_patch which I'm trying to convert to the standardAxes.patch. By default, theAxes.patch is aRectangle, which triggers a fast-path to set a clip box instead of a clip path. However, since most map boundaries are non-square, the full clip path code is used instead. When doing so, this causes some strange artifacts.

(Un)Fortunately, it can be reproduced with plain Matplotlib below.

Code for reproduction

importmatplotlib.pyplotaspltimportmatplotlib.patchesasmpatchesfrommatplotlib.collectionsimportPatchCollectionfrommatplotlib.pathimportPathpth=Path([[0,0], [1,0], [1,1], [0,1], [0,1]],           [1,2,2,2,79])fig,ax=plt.subplots(2,2,sharex=True,sharey=True)ax[0,0].set_xlim(-1,2)ax[0,0].set_ylim(-1,2)forainax[0]:collection=a.add_collection(PatchCollection([mpatches.PathPatch(pth)],facecolor='C0',edgecolor='k'))collection.set_clip_path(Path([[0,0], [1,0], [1,1], [0,1], [0,1]]),a.transAxes)forainax[1]:patch=a.add_patch(mpatches.PathPatch(pth,facecolor='C0',edgecolor='k'))patch.set_clip_path(Path([[0,0], [1,0], [1,1], [0,1], [0,1]]),a.transAxes)ax[0,0].set_ylabel('PatchCollection')ax[1,0].set_ylabel('PathPatch')ax[1,0].set_xlabel('Default clip box')ax[1,1].set_xlabel('Custom clip path')plt.savefig('test.png')

Actual outcome

In the bottom row is a plainPathPatch, and the top row is aPatchCollection containing the samePathPatch. The left column shows the default clipping (to the clip box of theAxes). The right column uses a clip path of a manually-specified 0-1 rectangle inAxes space, so it should be equivalent.

But the horizontal edges are either doubled over or the wrong width in the top-right case.

test

Expected outcome

All path edges should look the same.

Matplotlib version

  • Operating system: Fedora 30
  • Matplotlib version: 3.1.3 and master,9d00ca8
  • Matplotlib backend (print(matplotlib.get_backend())): TkAgg (probably only the Agg bit is relevant)
  • Python version: 3.6.9 / 3.6.3

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp