Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pyplot pcolormesh confused when alpha not 1

I am having some difficulty with pyplot's awesome drawing abilities. I have selected my very own colormap

n = 6
map = matplotlib.cm.get_cmap('Dark2')
cmap = colors.ListedColormap([(0,0,0,0)] + [[map(i * 1.0 / n)[j] for j in range(3)] + [0.2] for i in range(1, n + 1)])

This is basically just the Dark2 colormap, discretized to n (in my case 6) values with the zero value mapping to pure white. The main difference, however, is that the alpha values for my custom colormap are set to 0.2, not 1 as is default.

The problem is that when I plot something using this, like

plt.pcolormesh(np.random.rand(10,10), cmap = cmapInv)

the result is something like this:

Result

This looks nice enough, but you can clearly see that around each box, there is a very thin border of the same color as the box but with alpha set to 1.

EDIT: As suggested in the comments, the cause of these borders is probably overlap between the boxes.

Is there a way to clean this up?

like image 395
5xum Avatar asked Dec 19 '13 10:12

5xum


1 Answers

As a minor workaround in the meantime, I found you can get the image closer to what you want by messing with the edgecolor and linewidth attributes. For example, using the following input to pcolormesh:

    plt.pcolormesh(np.random.rand(10,10), cmap = cmapInv, edgecolor=(1.0, 1.0, 1.0, 0.3), linewidth=0.0015625)

outputs the following image:

enter image description here

like image 108
Jonathan A. Gross Avatar answered Oct 12 '22 17:10

Jonathan A. Gross