matplotlib / matplotlib/basemap

Hollow markers are not transparent

Open
#455 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
817
Forks
395
PR merge metrics
No merged PRs in 30d

Description

Hello,

When I tried to plot hollow markers on the map, the marker is actually filled, not transparent. See this map below:

image

Below is the code to reproduce this map:

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

lon_ll = -124.5  # lower left corner, longitude
lon_ur = -105.2  # upper right corner, longitude
lat_ll = 32.0    # lower left corner, latitude
lat_ur = 42.0    # upper right corner, latitude

f = plt.figure(dpi=100)
ax = plt.axes()

m = Basemap(llcrnrlon=lon_ll,llcrnrlat=lat_ll,
            urcrnrlon=lon_ur,urcrnrlat=lat_ur,\
            rsphere=(6378137.00,6356752.3142),\
            resolution='c',projection='merc',\
            lat_0=(lat_ll+lat_ur)/2,\
            lon_0=(lon_ll+lon_ur)/2,lat_ts=20.,
            epsg = 3310)

m.arcgisimage(service='World_Physical_Map', xpixels=120, epsg=3310, verbose=False)

m.drawstates()

LA = (34.05, -118.25)
LV = (36.175, -115.136389)
SF = (37.783333, -122.416667)
PH = (33.45, -112.066667)

ms = 15
alpha = 0.75

m.plot(*m(LV[1], LV[0]), marker='s', ms=ms,
       ls='none', mew=1.25,c='blue', fillstyle='none', alpha=alpha)
m.plot(*m(LA[1], LA[0]), marker='o', ms=ms,
       ls='none', mew=1.25,c='red', fillstyle='right', alpha=alpha)
m.plot(*m(PH[1], PH[0]), marker='o', ms=ms,
       ls='none', mew=1.25,c='green', fillstyle='full', alpha=alpha)
m.plot(*m(SF[1], SF[0]), marker='o', ms=ms,
       ls='none', mew=1.25,c='cyan', fillstyle='left', alpha=alpha,
       markerfacecoloralt='white')

horiz_offset = 0.6  # unit: degrees
plt.text(*m(LA[1] + horiz_offset, LA[0]), 'Los Angeles')
plt.text(*m(LV[1] + horiz_offset, LV[0]), 'Las Vegas')
plt.text(*m(SF[1] + horiz_offset, SF[0]), 'San Francisco')
plt.text(*m(PH[1] + horiz_offset, PH[0]), 'Phoenix')

The markers for Los Angeles and Las Vegas should have been hollow (on the left side for LA, and fully for LV), but they are not. For half-full markers, such as the marker for San Francisco, I can set the markerfacecoloralt to other colors, but not for fully open markers.

  • Operating system: Windows 10
  • Python version: 3.6.6
  • Basemap version: both 1.1.0 and 1.2.0 have this issue
  • matplotlib version: 2.2.2

Note that I used to not have this issue some time ago, with older versions of matplotlib (I don't remember which).

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the supplied Python reproduction with the listed Basemap and matplotlib versions, focusing on the m.plot entry point and the hollow, half-filled, and full markers. Compare the rendered output with the expected transparency described in the issue, then verify that hollow markers render unfilled while the other marker styles remain unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data-visualization
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.