I want to draw two beta distributions comparing a prior and posterior distribution but it seems that the coefficients are too large for LaTeX? How do I fix it without changing the function? It has a few errors including Dimension too large and Number too big.

\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=8.333333333333332cm,y=1.0cm]  
\draw[->,color=black] (-0.1,0) -- (1.1,0);  
\foreach \x in {,0.2,0.4,0.6,0.8,1}  
\draw[shift={(\x,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[below] {\footnotesize $\x$};  
\draw[color=black] (1.04,0.04) node [anchor=south west] { $\theta$};  
\draw[->,color=black] (0,-0.5) -- (0,5.5);    
\foreach \y in {,1,2,3,4,5}    
\draw[shift={(0,\y)},color=black] (2pt,0pt) -- (-2pt,0pt) node[left] {\footnotesize $\y$};  
\draw[color=black] (0pt,-10pt) node[right] {\footnotesize $0$};  
\clip(-0.1,-0.5) rectangle (1.1,5.5);  
\draw[dash pattern=on 1pt off 1pt,color=qqttcc, smooth,samples=100,domain=8.000000000003847E-7:0.9999990727280006] plot(\x,{3682570000*(1-(\x))^(10.67)*(\x)^(21.49)});  
\draw[color=qqccqq, smooth,samples=100,domain=8.000000000003847E-7:0.9999990727280006] plot(\x,{2120.93*(1-(\x))^(2.67)*(\x)^(9.49)});  
\draw (0.49,4.17) node[anchor=north west] {$g(\theta|D)$};  
\draw (0.89,3.23) node[anchor=north west] {$g(\theta)$};  
  • This always happens to me! I want an answer to this.
    – Ryan Reich
    Apr 6, 2013 at 16:17
  • 1
  • For this question is a duplicated one. I can't vote because this question has an open bounty. Apr 22, 2013 at 19:56
  • In order to stick with plain tikz, you may want to consider using either the fixedpointarithmetic library of the fpu library. Both come with tikz and both allow to rescale every value by some prescribed amount. Perhaps that fixes the problem after some trial and error. If not, you may have bad luck unless you rely on other non-tikz solutions. Apr 23, 2013 at 20:07

2 Answers 2


Consider also an Asymptote option, as it's quite powerful in graph drawing, especially when there is an array of curves. An example below organizes functions in array; other properties like color, width, label etc can be organized in arrays as well to be drawn in one loop. Also, the y-coordinate of the label is calculated as a point on the curve. asy-plot.tex

import graph;
real xMin=8.000000000003847e-7;
real xMax=0.9999990727280006;
int n=100;

typedef real Func(real x);

Func[] f={
   new real(real x){return 3682570000*(1-x)^(10.67)*x^(21.49);},
   new real(real x){return 2120.93*(1-x)^2.67*x^9.49;},

pen dashed=linetype(new real[] {4,3}); // set up dashed pattern

pen[] curvePen={rgb(0,0.8,0)+dashed,rgb(0,0.2,0.8),};
real[] curveWidth={1.6pt,2pt};
Label[] lab={
  Label("$g(\theta\,\vert D)$",(0.6,f[0](0.6))),

for(int i=0;i<f.length;++i){
  draw(graph(f[i], xMin ,xMax ,n),curvePen[i]+curveWidth[i]);


To process it with latexmk, create file latexmkrc:

sub asy {return system("asy '$_[0]'");}

and run latexmk -pdf asy-plot.tex. The result looks like

enter image description here

  • Never heard of this package, but it looks nice.
    – Ryan Reich
    Apr 6, 2013 at 20:06
  • I tried to export my graph in asymptote package but the code generated just seemed wrong. I could tell what bit of the code did what and there was no preamble so I didn't know what packages and such it needed. Looks nice though!
    – DannyBland
    Apr 8, 2013 at 11:56
  • @DannyBland: What kind of software have you used for the export? Perhaps, the export was in a standalone asy file form, which has to be processed with asy -f pdf file.asy to get file.pdf to include it into LaTeX document.
    – g.kov
    Apr 9, 2013 at 5:12
  • @g.kov I use Geogebra.
    – DannyBland
    Apr 9, 2013 at 16:38
  • @DannyBland: Right, Geogebra exports a pure Asymptote code, for some reason adding .tex extension, when it should be .asy. Asymptote does not care much about extension, but it's better to rename the exported file to, say, example.asy and run asy example.asy to get example.eps or asy -f pdf example.asy to get example.pdf.
    – g.kov
    Apr 10, 2013 at 3:39

Not a direct answer but I would use pgfplots for this. Maybe turning on the fpu library at the right point, might solve the problem but you don't need to draw any axis etc. so I think this is much more convenient.

\begin{tikzpicture}[line cap=round,line join=round]
    axis lines=middle,
    every inner x axis line/.append style={-triangle 45},
    every inner y axis line/.append style={-triangle 45},
\addplot[dash pattern=on 1pt off 1pt,color=qqttcc, smooth,samples=100,domain=8.000000000003847E-7:0.9999990727280006] plot(\x,{3682570000*(1-(\x))^(10.67)*(\x)^(21.49)});  
\addplot[color=qqccqq, smooth,samples=100,domain=8.000000000003847E-7:0.9999990727280006] plot(\x,{2120.93*(1-(\x))^(2.67)*(\x)^(9.49)});  
\node at (axis cs:0.49,4.17) {$g(\theta|D)$};  
\node at (axis cs:0.89,3.23) {$g(\theta)$};  

enter image description here

The problem related to your edit is that the numbers become too small towards the end of the domain. To show that I've switched to the logarithm axis on y axis. TeX cannot handle that precision but the fpu library of TikZ or pgfplots by default can handle up to some extent and exits with divide by zero error. Otherwise pgfplots allows for gnuplot directives to be executed outside of TeX. Please check the manual of pgfplots Also you don't need to define everycolor you use. xcolor is a pretty powerful package so you can use color mixing capabilities. Here is a minimal example without any axis settings etc. to show how easy to use:

\pgfplotsset{compat=1.8} % The latest version on CTAN
\addplot[red,smooth,samples=100,domain=0.0:1.0] {(3.1415926535*sin(((x)*3.1415926535)*180/pi))/2};  
\addplot[green!80!black, smooth,samples=100,domain=0.0:1.0] {(x)^1^2*(1-(x))^8*sin(((x)*3.1415926535)*180/pi)*1/(3.44*10^(-7))};  
\addplot[blue!80!green, ultra thick,smooth,samples=100,domain=0.0:1.0] {2.718281828^((-((x)-0.58)^2)/(0.1^2*2))/(abs(0.1)*sqrt(3.1415926535*2))};

enter image description here

  • Thank you it worked for this situation, could you possibly do the same for the situation I added in an edit?
    – DannyBland
    Apr 6, 2013 at 21:24
  • @DannyBland See the edited version.
    – percusse
    Apr 6, 2013 at 21:46
  • Thanks, it doesn't work for me unfortunately, I gave up and just used printscreen, only downside is that the axes labels are small but I can live with that.
    – DannyBland
    Apr 6, 2013 at 22:29
  • @DannyBland What is not working exactly? We are trying to point out that there is a fundamental obstacle. See the duplicate Marco Daniel refers to. You can't get that precision out of TikZ without fpu recoding
    – percusse
    Apr 22, 2013 at 21:01

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .