Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hollow markers are not transparent #455

Open
jsh9 opened this issue Mar 19, 2019 · 3 comments
Open

Hollow markers are not transparent #455

jsh9 opened this issue Mar 19, 2019 · 3 comments

Comments

@jsh9
Copy link
Contributor

jsh9 commented Mar 19, 2019

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).

@WeatherGod
Copy link
Member

WeatherGod commented Mar 20, 2019 via email

@jsh9
Copy link
Contributor Author

jsh9 commented Mar 20, 2019

I was able to reproduce the result here: https://matplotlib.org/gallery/lines_bars_and_markers/marker_fillstyle_reference.html

For "fill style" equal to "none", the markers are transparent. So it seems that matplotlib is normal.

I am pretty sure the issue didn't come from matplotlib upgrading to v2.0, because when I was able to get proper hollow markers, the matplotlib version I was using was already v2.0+.

Should I open an issue over at matplotlib?

@ImportanceOfBeingErnest
Copy link
Member

As shown in matplotlib/matplotlib#13725 this seems to be an issue in matplotlib 2.2.2, which has been fixed in matplotlib 2.2.3.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants