Apache Log Visualization with Matplotlib : Learn Data Science

This post discusses Apache log visualization with Matplotlib library. First, download the data file used in this example from here.

We will require numpy and matplotlib

In [1]:

import numpy as np
import matplotlib.pyplot as plt

numpy.loadtext() can directly load a text file in an array requests-idevji.txt contains only hour on which request was made, this is achieved by pre-prcoessing the Apache log.

In [2]:

data = np.loadtxt (‘requests-idevji.txt’)

We need 24 bins because we have 24 hours’ data. For other attributes of hist() see references.

In [3]:

plt.hist(data, bins=24)
plt.title(“Requests @ iDevji”)
plt.xlabel(“Hours”)
plt.ylabel(“# Requests”)

Out[3]:

Text(0,0.5,’# Requests’)

In [4]:

plt.show()

![](data:image/png;base64,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 i8EhSerl/wNIVKauyJc3VgAAAABJRU5ErkJggg==)

References:

  1. numpy.loadtext(), Scipy.org
  2. PyPlot API, Matplotlib.org