How to make a log log histogram in python
26,165
Check out the pyplot documentation.
- pyplot.hist can "log" y axis for you with keyword argument log=True
- pyplot.hist accepts
bins
keyword argument, but you have to "log" x axis yourself
For example:
#!/usr/bin/python
import numpy
from matplotlib import pyplot as plt
data = numpy.random.gumbel(2 ** 20, 2 ** 19, (1000, ))
bins = range(15, 25)
plt.xticks(bins, ["2^%s" % i for i in bins])
plt.hist(numpy.log2(data), log=True, bins=bins)
plt.show()
This will give you the actual counts of how how many elements fall into each bin, plotted on a log axis (which is what people usually mean by a log plot). I couldn't tell from your wording if you wanted this or the log of the count plotted on a linear axis.
Btw., bins don't even have to be spaced evenly.
![Admin](/assets/logo_square_200-5d0d61d6853298bd2a4fe063103715b4daf2819fc21225efa21dfb93e61952ea.png)
Author by
Admin
Updated on July 09, 2022Comments
-
Admin almost 2 years
Given an an array of values, I want to plot a log log histogram of these values by their counts. I only know how to log the x values, but not the y values because they are not explicitly created in my program.
-
Nikana Reklawyks about 9 yearsTo plot the log of the count of a linear axis is comparatively easier, and anyway both methods give the same graph. +1 for the key beginning. But I don't get what you do in the code : are you displaying fake exponential tick tags on what's really a linear x-scale ?