Número de función TikZ demasiado grande

Número de función TikZ demasiado grande

Quiero dibujar dos distribuciones beta comparando una distribución anterior y posterior, pero parece que los coeficientes son demasiado grandes para LaTeX. ¿Cómo lo soluciono sin cambiar la función? Tiene algunos errores, incluidos Dimension too largey Number too big.

\documentclass[10pt]{article}  
\usepackage{pgf,tikz}  
\usetikzlibrary{arrows}  
\pagestyle{empty}  
\begin{document}  
\definecolor{qqccqq}{rgb}{0,0.8,0}  
\definecolor{qqttcc}{rgb}{0,0.2,0.8}  
\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)$};  
\end{tikzpicture}  
\end{document}

Respuesta1

Considere también una opción de Asíntota, ya que es bastante poderosa en el dibujo de gráficos, especialmente cuando hay una serie de curvas. Un ejemplo a continuación organiza funciones en una matriz; Otras propiedades como color, ancho, etiqueta, etc. se pueden organizar en matrices y también se pueden dibujar en un bucle. Además, la ycoordenada de la etiqueta se calcula como un punto de la curva. asy-plot.tex

\documentclass{standalone}
\usepackage{lmodern}
\usepackage[inline]{asymptote}
\begin{document}  
\begin{asy}
import graph;
size(250,170,IgnoreAspect);
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))),
  Label("$g(\theta)$",(0.9,f[1](0.9))),
};

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

xaxis("",0,1.049,RightTicks(Step=0.1,step=0.05),EndArrow);
yaxis("",0,5-0.15,LeftTicks(Step=1,step=0.5),EndArrow);
\end{asy}
\end{document}

Para procesarlo latexmk, cree el archivo latexmkrc:

sub asy {return system("asy '$_[0]'");}
add_cus_dep("asy","eps",0,"asy");
add_cus_dep("asy","pdf",0,"asy");
add_cus_dep("asy","tex",0,"asy");

y correr latexmk -pdf asy-plot.tex. El resultado parece

ingrese la descripción de la imagen aquí

Respuesta2

No es una respuesta directa, pero la usaría pgfplotspara esto. Tal vez encender la fpubiblioteca en el punto correcto podría resolver el problema, pero no es necesario dibujar ningún eje, etc., así que creo que esto es mucho más conveniente.

\documentclass{standalone}
\usepackage{pgfplots}
\usetikzlibrary{arrows}  
\definecolor{qqccqq}{rgb}{0,0.8,0}
\definecolor{qqttcc}{rgb}{0,0.2,0.8}
\begin{document}  
\begin{tikzpicture}[line cap=round,line join=round]
\begin{axis}[
    axis lines=middle,
    every inner x axis line/.append style={-triangle 45},
    every inner y axis line/.append style={-triangle 45},
    enlargelimits]
\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)$};  
\end{axis}
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

El problema relacionado con su edición es que los números se vuelven demasiado pequeños hacia el final del dominio. Para mostrar que cambié al eje de logaritmos en el eje y. TeX no puede manejar esa precisión, pero la fpubiblioteca de TikZ o pgfplotspor defecto puede manejar hasta cierto punto y sale con error de división por cero. De lo contrario, pgfplotspermite que gnuplotlas directivas se ejecuten fuera de TeX. Consulte el manual de pgfplotsAdemás, no es necesario definir todos los colores que utiliza. xcolor es un paquete bastante poderoso para que puedas usar capacidades de mezcla de colores. Aquí hay un ejemplo mínimo sin ninguna configuración de eje, etc. para mostrar lo fácil de usar:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8} % The latest version on CTAN
\begin{document}  
\begin{tikzpicture}
\begin{semilogyaxis}
\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))};
\end{semilogyaxis}
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada