Adventures in Machine Learning

Logarithmic Scaling for Powerful Data Visualization: Semilogx() Semilogy() and Loglog() in Matplotlib

Semilogx() and semilogy() are two useful functions in the Pyplot module of the Matplotlib library that allow us to create logarithmic scale graphs on the x-axis and y-axis, respectively. Both functions are incredibly versatile, allowing us to plot data in a way that better suits our needs.

In this article, we will explore the applications of these two functions, their differences, and how you can use them to create an efficient plot that highlights the vital information while also being visually appealing.

Log Scaling on X-Axis using Semilogx()

Logarithmic scaling of the x-axis is often helpful when working with datasets with variable ranges of data points. The semilogx() function allows us to use this scaling in a very intuitive manner.

Let’s say we have a data set that spans several orders of magnitude in the x-axis; plotting it with normal linear scaling may result in some data points becoming indistinguishable on the graph. This problem can be solved by using semilogx().

To use semilogx(), we first need to import Pyplot and NumPy libraries. The following code does this:


import matplotlib.pyplot as plt

import numpy as np


Next, we can create a simple graph with natural numbers from 1 to 10 on the x-axis and arbitrary values on the y-axis using the following code:


x = np.arange(1, 10)

y = [5, 16, 54, 120, 218, 370, 573, 834, 1141]

plt.plot(x, y)


This will produce a simple line graph without any scaling on the x-axis or y-axis. However, adding logarithmic scaling to the x-axis is as simple as adding one line of code:


plt.semilogx(x, y)


The resulting graph will have a logarithmically-scaled x-axis.

Log Scaling on Y-Axis using Semilogy()

The semilogy() function works in a very similar way to semilogx(), but it operates on the y-axis. The main advantage of using semilogy() is when we have non-uniformly spaced y-axis data.

Some y-axis data points may vary across orders of magnitude, making it difficult to identify extreme values or outliers within the dataset. By plotting these datasets using logarithmic scaling on the y-axis, we can get a good sense of the relative scale of these data points.

To use semilogy(), we will follow a similar procedure to using semilogx(). First, we import the Pyplot and NumPy libraries.

Next, we create our data points for x and y values. As an example, let’s say we want to visualize the population of birds with wingspans ranging from 1mm to 10m, with random values for their populations.

We can use the following code to create these hypothetical data points:


x = np.logspace(-3, 1, 100)

y = np.random.randint(1, 1000, 100)


In this example, the range of possible values for the wingspan of birds is from 1 mm to 10m, and we are generating 100 random values for their population. Next, we can plot these data points using semilogy() as follows:


plt.semilogy(x, y, ‘*’)

plt.xlabel(‘Wingspan (m)’)



The resulting graph is a plot of the wingspan of birds versus their population, with the y-axis affected by logarithmic scaling, showing how different factors are present in the dataset.

Differences between Semilogx() and Semilogy()

Even though semilogx() and semilogy() functions have a lot in common, they do have some differences worth mentioning. The main difference between these two functions is that semilogx() plots data with a logarithmic scale on the x-axis, while semilogy() plots data with a logarithmic scale on the y-axis.

Both functions operate the same way when applying logarithmic scaling, with a linear scaling of the other axis. Another slight difference between the two functions is that semilogx() sets the minimum value of the x-axis to 1 by default, whereas semilogy() sets the minimum value of the y-axis to 1 by default.

This default behavior shows that semilogx() doesn’t support negative x-axis values while semilogy() doesn’t support negative y-axis values.


Semilogx() and semilogy() are powerful functions that provide logarithmic scaling capabilities for the x-axis and the y-axis, respectively. These adjustments can help us in cases where data points span across several orders of magnitude, which can cause difficulties when graphing.

The availability of Pyplot library ensures that users can create amazing visualizations using data analysis libraries like NumPy and Pandas. Better still, semilogx() and semilogy() can be combined with other functions and tools to create interactive, custom-designed graphs that help users extract vital information during analysis.

Log Scaling on Both Axes using Loglog()

Semilogx() and semilogy() provide great options for scaling either the x-axis or the y-axis logarithmically, but what if we want to apply logarithmic scaling on both axes? That’s where the loglog() function comes into play.

This function allows us to create a plot using logarithmic scales for both the x-axis and y-axis. To use the loglog() function, we follow a similar procedure as we did for semilogx() and semilogy().

We need to import the Pyplot and NumPy libraries, and then create our data points. Let’s say we have a dataset that includes the populations of different cities and their respective total area.

We can use the following code to create these hypothetical data points:


x = [5.1, 25, 305, 310]

y = [100, 500, 5000, 50000]


Here, we have four different cities with varying populations, and total areas and we want to plot them on a graph with logarithmic scales on both axes. Next, we can use the loglog() function to create the plot with both axes scaled logarithmically:


plt.loglog(y, x, ‘*’)

plt.xlabel(‘Total Area (km^2)’)



The resulting graph now displays both the x-axis and y-axis on logarithmic scales, allowing us to see how the data is distributed across different orders of magnitude.

Additional Resources

Matplotlib is among the most popular and powerful data visualization libraries available in Python. It provides immense support with various plotting functions, along with various customization options.

There are a variety of log-scaling functions available in Matplotlib, including semilogx(), semilogy(), and loglog(). Knowing how to apply logarithmic scaling to your plots is essential when working with data that spans several orders of magnitude.

To learn more about log scaling in Matplotlib, there are plenty of resources available online. For example, the official Matplotlib website provides a comprehensive tutorial section with detailed explanations and examples of how to use different Matplotlib functions, including those for log scaling.

One such resource that is helpful for those looking to learn more about log scaling in Matplotlib is the tutorial found on the Matplotlib website. The tutorial includes step-by-step explanations of how to use different log scaling functions, along with sample codes that illustrate how log scaling can be applied in different scenarios.

Additionally, there are also plenty of user-generated content and examples available on websites like StackOverflow, where users can ask and answer questions related to using Matplotlib functions.


In conclusion, using log scaling functions like semilogx(), semilogy() or loglog() in Matplotlib is a great way to visualize data across different orders of magnitude. By applying logarithmic scaling to axes, we can make the most of the information in our data and create graphs that are easy to read and understand.

It also highlights the principle that great visualization isn’t just about pretty pictures, but facilitates our understanding of data. With Matplotlib, we have a variety of tools and resources to help us achieve these goals.

In summary, this article has explored three different log scaling functions available in Matplotlib, namely, semilogx(), semilogy(), and loglog(). By applying logarithmic scaling to each axis, we can visualize data in more detail, especially when there are data points spanning over several orders of magnitude.

Logarithmic scaling can be applied to axes to make the most of the information in our data and create graphs that are easy to read and understand. Understanding and using these functions can indeed improve our visualization skills and lead to better informed and insightful analysis.

Overall, this article reinforces the idea that using Matplotlib’s log scaling functions can leverage its power and utility in data visualization.

Popular Posts