# Draw Histogram with Logarithmic Scale in R (3 Examples)

This article illustrates how to **convert the x-axis of a graph to log scale** in R.

The article is structured as follows:

Itâ€™s time to dive into the examples:

## Creation of Example Data

Have a look at the following example data:

set.seed(120653) # Set random seed x <- c(rnorm(1000, 6), rnorm(1000, 13, 4)) # Create example data head(x) # Head of example data # [1] 6.717975 5.000511 5.836833 5.255884 5.894466 5.847968

The previous output of the RStudio console shows the structure of our example data â€“ Itâ€™s a numeric vector containing randomly drawn numbers.

## Example 1: Draw Histogram with Logarithmic Scale Using Base R

Example 1 shows how to create a Base R histogram with logarithmic scale.

Letâ€™s first draw a histogram with regular values on the x-axis:

hist(x, breaks = 100) # Histogram without logarithmic axis

As shown in Figure 1, the previous R programming code created a histogram without logarithmic scale.

If we want to convert the x-axis values of our histogram to logarithmic scale, we can use the log function as shown below:

hist(log(x), breaks = 100) # Histogram with logarithmic axis

As shown in Figure 2, the previous syntax created a Base R histogram with logarithmic scale.

## Example 2: Draw Histogram with Logarithmic Scale Using ggplot2 Package

In this example, Iâ€™ll explain how to draw a ggplot2 histogram with logarithmic scale.

If we want to use the functions of the ggplot2 package, we first need to install and load ggplot2:

install.packages("ggplot2") # Install & load ggplot2 package library("ggplot2")

Next, we can draw a ggplot2 histogram without log scale:

ggplot(data.frame(x), aes(x)) + # Histogram without logarithmic axis geom_histogram(bins = 100)

The output of the previous R code is shown in Figure 3 â€“ A ggplot2 histogram with default x-axis values.

Letâ€™s transform our x-axis to logarithmic scale:

ggplot(data.frame(log(x)), aes(log(x))) + # Histogram with logarithmic axis geom_histogram(bins = 100)

As shown in Figure 4, the previous code created a ggplot2 histogram with logarithmic scale using the log and geom_histogram functions.

## Example 3: Draw Histogram with Logarithmic Scale Using scale_x_log10 Function of ggplot2 Package

In case we want to draw a ggplot2 histogram with log10 scale, we can use the scale_x_log10 function instead of the log function.

ggplot(data.frame(x), aes(x)) + # Histogram with log10 axis geom_histogram(bins = 100) + scale_x_log10()

The output of the previous R programming code is shown in Figure 5 â€“ A ggplot2 plot with log10 x-axis scale.

## Video & Further Resources

Do you need more explanations on the R programming codes of this tutorial? Then you might have a look at the following video of my YouTube channel. In the video, Iâ€™m explaining the R programming code of this article:

**Please accept YouTube cookies to play this video.** By accepting you will be accessing content from YouTube, a service provided by an external third party.

If you accept this notice, your choice will be saved and the page will refresh.

In addition, you might want to have a look at the other articles on my website.

- Transform ggplot2 Plot Axis to log10 Scale
- Natural, Binary & Common Logarithm Using log() Function
- R Graphics Gallery
- R Programming Examples

In this post you learned how to **display the x-axis of a graphic in logarithmic scale** in the R programming language. In case you have any further questions, let me know in the comments section below.

### Statistics Globe Newsletter

## 2 Comments. Leave new

Hello there, could you help me with changing x-axis values for a log scaled histogram?

I have used hist(log(mydata$data, 10)) which gives me the histogram I want but now I want to change the x-axis values from log base exponents to the actual value they represent i.e., instead of 1, 2, 3, 4, 5 I’d like 10, 100, 1000, 10000, 100000.

Hello Jack,

I understand that you want to plot a histogram for the transformed data but use the actual values as labels on the x-axis. Then I suggest you run the code below.

Be aware that I also changed the x-axis label from log(x) to x.

Regards,

Cansu