I have a sequence of 3 (or more) colors stored as RGB values (or corresponding hex) and I would like to display them as below:
Following and modifying the suggestions here I was able to get somewhat close, though I am not quite sure I understand how colors are being represented there as a single float. Is there anyway I can convert an RGB/hex representation to whatever matshow() uses? Alternatively, is there a more elegant way of producing the above output? Thanks!
There is a wrapper called seaborn that sits on top of matplotlib that does nice job of displaying the colormap or selected colors. For example:
sns.palplot(sns.color_palette("coolwarm", 7))
I suggest this over standard matplotlib since it exposes more support for working with color schemes and conversions as mentioned in the other part of your question. If you don't want to use an outside library, just modify the source code that plots this:
def palplot(pal, size=1):
"""Plot the values in a color palette as a horizontal array.
Parameters
----------
pal : sequence of matplotlib colors
colors, i.e. as returned by seaborn.color_palette()
size :
scaling factor for size of plot
"""
n = len(pal)
f, ax = plt.subplots(1, 1, figsize=(n * size, size))
ax.imshow(np.arange(n).reshape(1, n),
cmap=mpl.colors.ListedColormap(list(pal)),
interpolation="nearest", aspect="auto")
ax.set_xticks(np.arange(n) - .5)
ax.set_yticks([-.5, .5])
ax.set_xticklabels([])
ax.set_yticklabels([])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With