Friends,

I created a histogram plot using data files that have discrete values (sample file attached ‘test.dat’).However when i view the plot, i see that the bars are not located exactly over the values. For example in the attached figure (test.png), i see a bar (gray) placed between values 1 and 2, while there is no such value between 1 and 2. Precisely i would like to know how to make histogram for discrete data values.

The following is my code.

#!/usr/bin/env python

import matplotlib.pyplot as plt

import numpy as np

import matplotlib as mpl

import matplotlib.mlab as mlb

#Creating input file list

flist=open(‘list’).read().split()

#Assignments

FIG=plt.figure(figsize=(4.,2.2),dpi=300)

FIG.subplots_adjust(hspace=0.04,wspace=0.06)

NROW=1;NCOL=1

mpl.rcParams[‘font.size’]=10

mpl.rcParams[‘lines.linewidth’]=0.8

mpl.rcParams[‘axes.linewidth’]=1.2

mpl.rcParams[‘legend.handletextpad’]=0.05

mpl.rcParams[‘legend.fontsize’]=10

mpl.rcParams[‘legend.labelspacing’]=0.009

pattern=[‘k’,‘r’]

color=[‘black’,‘green’,‘red’]

ax1=FIG.add_subplot(111)

for value in range(len(flist)):

data=np.loadtxt(flist[value])

n, bins, patches = ax1.hist(data,facecolor=color[value], alpha=0.60,visible=True,histtype=‘bar’,align=‘mid’)

ax1.grid(True,alpha=1.5)

ax1.set_ylabel(‘Absolute no.’,size=10)

plt.savefig(‘test.png’,dpi=100)

ax1.set_xlim([0,9])

plt.show()

test.dat (2.21 KB)