Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I got the data of each bin by measurements like {start, end, height} and I want something like this picture: http://tinypic.com/view.php?pic=2i208hs&s=5

I have no other data for the Histogram[], just what you can see on the linked picture. So any ideas how to do this in Mathematica (version 9)?

(The whole thing is for fitting a distibution curve on it.)

share|improve this question
add comment

2 Answers

Generate the test data:

points = 10;
xi = Sort[Table[n + RandomReal[{-.2, 1.5}], {n, points + 1}]]
yi = RandomReal[{1, 5}, points]
data = Table[{xi[[i]], xi[[i + 1]], yi[[i]]}, {i, Length[yi]}]

This creates the data in the format $\{start,end,height\}$. Draw the plot:

ListPlot[data[[All, {2, 3}]], PlotStyle -> None, 
 Prolog -> {Opacity[0], EdgeForm[Black], 
   Rectangle[{#[[1]], 0}, {#[[2]], #[[3]]}] & /@ data}, 
 AxesOrigin -> {0, 0}]

Bar plot

share|improve this answer
add comment

First I'll generate some data in {start,end,height} format. This data is drawn from a standard normal distribution.

data = Partition[Flatten[Transpose[{Thread[{Most[#[[1]]], Rest[#[[1]]]}], #[[2]]}]], 3] &
              [HistogramList[RandomReal[NormalDistribution[], 100], Automatic, "PDF"]]

Now you could try using a combination of explicit binning and a height function.

hfun[bins_, counts_] := counts
x = Union[Flatten[data[[All, 1 ;; 2]]]];
h = data[[All, -1]];
Histogram[x, {x}, hfun[#, h] &]

enter image description here

Suppose you want to compare it to the underlying distribution.

Show[Histogram[x, {x}, hfun[#, h] &], 
 Plot[PDF[NormalDistribution[], t], {t, -3, 3}], PlotRange -> All]

enter image description here


In this particular case I assume normalized heights because I generated them with HistogramList and the setting "PDF". If this is not the case you may need to normalize them yourself. This can be accomplished by replacing h with hnorm in Histogram where hnorm is given by

hnorm = h/Differences[x].h
share|improve this answer
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.