This Tutorial teaches you how to color matplotlib histograms and solve an issue where the bars appear black.
Before we color our histograms, we need to set up our script to work with the library. So we start by importing matplotlib. Furthermore, we load the
randrange function from the
random module to quickly generate some data.
import matplotlib.pyplot as plt from random import randrange
We continue by setting a style, to see all the styles available check out
Last but not least, we generate the data in a one-line loop. This won’t generate nice data that makes sense, but it’s good for testing purposes. Keep in mind that the data won’t be the same for you.
data = [randrange(0, 100) for _ in range(0, 800)]
Coloring the Histogram in Matplotlib
Now we make a colored histogram. We just pass the
color argument a color name for doing that. Here lists all named colors available in matplotlib. Don’t also forget to call the
plt.hist(data, 3, color='red') plt.show()
A problem arises when we set a higher amount of bins. As you see in the image, the color is no longer red but black.
This is because the style we used set the border color of the bars to black, and now it’s the only thing we see. To fix this, we either set the bar border width to 0 or its color also to red.
plt.hist(data, 500, color='red', ec='red') # ec is the edge color
plt.hist(data, 500, color='red', lw=0) # lw is the linewidth
import matplotlib.pyplot as plt from random import randrange plt.style.use('classic') data = [randrange(0, 100) for _ in range(0, 800)] plt.hist(data, 500, color='red', lw=0) plt.show()