How to make a log histogram in Python?

To make a log histogram in Python, we can use log=True in the argument of the hist() method. This creates a histogram where the y-axis is displayed on a logarithmic scale, which is useful for data with wide ranges or exponential distributions.

What is a Log Histogram?

A log histogram displays the frequency counts on a logarithmic scale instead of a linear scale. This is particularly useful when your data spans several orders of magnitude or when you want to visualize the distribution of exponentially distributed data more clearly.

Basic Log Histogram

Here's how to create a basic log histogram using matplotlib ?

import numpy as np
import matplotlib.pyplot as plt

# Generate sample data
data = np.random.exponential(2, 1000)

# Create log histogram
plt.hist(data, bins=30, log=True, alpha=0.7)
plt.xlabel('Value')
plt.ylabel('Frequency (log scale)')
plt.title('Log Histogram')
plt.show()

Log Histogram with Density

You can also create a normalized log histogram using the density parameter ?

import numpy as np
import matplotlib.pyplot as plt

# Configure plot settings
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# Create data
k = np.array([1, 2, 5, 10, 50, 100, 500, 1000])

# Create log histogram with density
x, bins, p = plt.hist(k, bins=5, density=True, log=True, alpha=0.7, color='blue')
plt.xlabel('Values')
plt.ylabel('Density (log scale)')
plt.title('Log Histogram with Density')
plt.show()

Log Transform vs Log Scale

There are two approaches to create log histograms: applying log transform to data or using log scale for y-axis ?

import numpy as np
import matplotlib.pyplot as plt

# Generate exponential data
data = np.random.exponential(1, 1000)

# Method 1: Log transform the data
plt.subplot(1, 2, 1)
plt.hist(np.log(data), bins=30, alpha=0.7)
plt.title('Log Transform of Data')
plt.xlabel('Log(Value)')
plt.ylabel('Frequency')

# Method 2: Log scale for y-axis
plt.subplot(1, 2, 2)
plt.hist(data, bins=30, log=True, alpha=0.7)
plt.title('Log Scale Y-axis')
plt.xlabel('Value')
plt.ylabel('Frequency (log scale)')

plt.tight_layout()
plt.show()

Key Parameters

Parameter Description Example
log=True Sets y-axis to log scale plt.hist(data, log=True)
density=True Normalizes the histogram plt.hist(data, density=True)
bins Number of histogram bins plt.hist(data, bins=20)

Conclusion

Log histograms are essential for visualizing data with wide ranges or exponential distributions. Use log=True for logarithmic y-axis scaling, or apply np.log() to transform the data itself. Choose the method based on whether you want to see the distribution on a log scale or the distribution of log-transformed values.

Updated on: 2026-03-25T19:43:13+05:30

4K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements