Re: Gaussian PDF Overlay
- To: mathgroup at smc.vnet.net
- Subject: [mg19297] Re: [mg19277] Gaussian PDF Overlay
- From: "Tomas Garza" <tgarza at mail.internet.com.mx>
- Date: Sat, 14 Aug 1999 01:45:20 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Lawrence Walker [lwalker701 at earthlink.net] wrote: > I've tried to overlay a continuous gaussian probability > density curve onto a bar chart of similar distribution. The > values for the barchart were generated by bin counting the > data using the BinCounts function. The data is a list > generated by Random[NormalDistribution[]]. > > At first I simply tried to overlay the plot and barchart > using Show. The x-axis scale of the curve was different > from the > barchart's scale. So I had to manually change the position > and rescale the curve until it overlayed the barchart using > the program below. I didn't like the fact that the x-scale > shows 0 to 40 instead of -4 to 4. > > Is there a better way of doing this? Use GeneralizedBarChart instead of BarChart. This allows you to fix the position of the bars, as well as their height and width: In[1]:= << Statistics`NormalDistribution`; << Graphics`Graphics`; << Statistics`DataManipulation`; In[2]:= gauss := Random[NormalDistribution[]]; data = Table[gauss, {7000}]; cutoffs = Range[-4, 4, .2]; freq = BinCounts[data, {-4, 4, .2}]; midpts = Drop[cutoffs + .1, -1]; In[8]:= bchart = GeneralizedBarChart[Transpose[{midpts, freq, Table[0.05, {40}]}], PlotRange -> All, BarLabels -> None, DisplayFunction -> Identity]; In[9]:= PlotCharts[mu_, sigma_, scale_] := ( plt = Plot[Evaluate[scale PDF[NormalDistribution[mu, sigma], x]], {x, -4, 4}, PlotRange -> All, DisplayFunction -> Identity]; Show[plt, bchart, DisplayFunction -> $DisplayFunction]); In[11]:= PlotCharts[0, 1, 1400] This does what you want. Tomas Garza Mexico City