

Hi,
I am trying to change the edgecolor of some hexbin patches in a hexbin plot. Fiddling around with it to understand how this could work, I encountered a behaviour I cannot understand. I initially opened an issue at seaborn here https://github.com/mwaskom/seaborn/issues/1734 . I get the same behaviour with pure matplotlib and am now asking here for help. Calling get_facecolors() on the PolyCollection returned by plt.hexbin gives different results depending on the jupyter notebook cell within which the call is made.
Here's my example (assuming the code is run in a notebook, using Python 3.6.8, NumPy 1.16.2, Matplotlib 3.0.3, Jupyter 4.4.0)
Cell 1:  import matplotlib import matplotlib.pyplot as plt import numpy as np 
Cell 2:  x = np.array([1,1,1,1.5,1.5,2]) y = np.array([1,1,1,1,1,1]) 
Cell 3:  polycollection = plt.hexbin(x, y, C=np.ones(x.shape), reduce_C_function=np.sum, extent=[1, 2, 0.5, 1.5], gridsize=3, linewidths=1, edgecolors='face') print(polycollection.get_facecolors())
 This plots three hexbins with different counts and different colours. Here, get_facecolors() returns a (1,4) array, namely, [[0.12156863 0.46666667 0.70588235 1. ]]
Cell 4:  print(polycollection.get_facecolors())
 When calling get_facecolors() again in the next cell, a (3,4) array is returned, namely, [[0.993248 0.906157 0.143936 1. ] [0.127568 0.566949 0.550556 1. ] [0.267004 0.004874 0.329415 1. ]]
The second array seems to be the correct one I think (there are different colors for each of the three hexbins). What is happening here? I am very confused!
Thanks, Niklas
_______________________________________________
Matplotlibusers mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlibusers


Just a quick update in case somebody else has a similar problem.
I needed to call plt.draw() within the Jupyter Notebook cell to populate the polycollection, that is, directly after the plt.hexhin() call and before the print() statement.
Cheers, Niklas Hi,
I am trying to change the edgecolor of some hexbin patches in a hexbin plot. Fiddling around with it to understand how this could work, I encountered a behaviour I cannot understand. I initially opened an issue at seaborn here https://github.com/mwaskom/seaborn/issues/1734 . I get the same behaviour with pure matplotlib and am now asking here for help. Calling get_facecolors() on the PolyCollection returned by plt.hexbin gives different results depending on the jupyter notebook cell within which the call is made.
Here's my example (assuming the code is run in a notebook, using Python 3.6.8, NumPy 1.16.2, Matplotlib 3.0.3, Jupyter 4.4.0)
Cell 1:  import matplotlib import matplotlib.pyplot as plt import numpy as np 
Cell 2:  x = np.array([1,1,1,1.5,1.5,2]) y = np.array([1,1,1,1,1,1]) 
Cell 3:  polycollection = plt.hexbin(x, y, C=np.ones(x.shape), reduce_C_function=np.sum, extent=[1, 2, 0.5, 1.5], gridsize=3, linewidths=1, edgecolors='face') print(polycollection.get_facecolors())
 This plots three hexbins with different counts and different colours. Here, get_facecolors() returns a (1,4) array, namely, [[0.12156863 0.46666667 0.70588235 1. ]]
Cell 4:  print(polycollection.get_facecolors())
 When calling get_facecolors() again in the next cell, a (3,4) array is returned, namely, [[0.993248 0.906157 0.143936 1. ] [0.127568 0.566949 0.550556 1. ] [0.267004 0.004874 0.329415 1. ]]
The second array seems to be the correct one I think (there are different colors for each of the three hexbins). What is happening here? I am very confused!
Thanks, Niklas
_______________________________________________
Matplotlibusers mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlibusers

