For a histogram with such a large number of bins, ybar interval as an axis option is not the ideal choice. ybar interval, if passed to the axis, will place a label for each bin, and draw a vertical line between each pair of bins; the algorithm usually employed for finding a useful number of labels is not used here. In your case, simply omitting ybar interval (or supplying ybar instead) in the axis options yields a much better result. Note that the ybar interval style is set for the individual plot anyway because you're using hist, but as a plot option, it doesn't influence the label placement:

The plot could be improved a bit by adding vertical grid lines, and choosing hist/data min, hist/data max, and hist/bins in such a way that the bins line up with the grid lines:

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\pgfplotstableset{col sep=semicolon}
\begin{tikzpicture}
\begin{axis}[
enlarge x limits=false,
enlarge y limits=upper,
axis lines*=left,
xmajorgrids,
grid style={white,ultra thin},
axis on top,
tick align=outside
]
\addplot [
hist={bins=150, data min=0, data max=15},
fill=black!75, draw=none
] table [y index=0] {data.csv};
\end{axis}
\end{tikzpicture}
\end{document}
xtick={-20,-15,...,20}or some other pattern. Please keep in mind that while code snippets are useful in explanations, it is always best to compose a fully compilable MWE that illustrates the problem including the\documentclassand the appropriate packages so that those trying to help don't have to recreate it. Without a sample ofFILENAMEthe reproduces this I can not test if this will fix the problem for you. – Peter Grill Apr 10 '12 at 04:51xtick={0,2,...,12}with your data produces reasonable results, but perhaps a real expert with plotting will have a better answer for you. – Peter Grill Apr 10 '12 at 06:52