I ran into a problem while upgrading code from Python 2 to Python 3 that required me to downgrade
matplotlib to version
2.2.3 in order to get the functionality in place (all tests were passing except for plotting).
Once that dust settled, I attempted to individually upgrade to
matplotlib==3.0.2 and ran into trouble with how
scatter parses color sequences.
I had a lot of trouble finding a good solution online, but after sifting through a lot of forums and GitHub issues1, and trying many permutations of different syntaxes, I finally came around to a “clean” solution that passed the tests as they were written.
The issue was that the
color argument must match the type of the
y inputs into
scatter, which was not the case before.
The code I was working with formed
y by indexing a 2-d
np.array (call it
data), and I found that using
np.reshape as follows led to the easiest backwards-compatible solution:
# inds represents indices x = data[inds, 0] y = data[inds, 1] c = colors[inds] # colors is passed to be height of some function that takes x and y as inputs. plt.scatter(np.reshape(x,-1), np.reshape(y,-1), c=np.reshape(c,-1), cmap=color_map) # color_map defined elsewhere
inds is length-1 or length-N, this syntax still works and respects the new requirements for coloring scatterplots.