Miré situaciones similares y ni siquiera puedo entender cómo me ayudarían los pgfplots, ya que necesito llenar un área entre dos líneas y una parábola. Aquí está mi código:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\coordinate (A1) at (0,0);
\coordinate (A2) at (1,3);
\coordinate (A3) at (3,2);
\draw[very thin,color=gray] (0,0) grid (3.2,3.2);
\draw[->,name path=xaxis] (-0.1,0) -- (3.2,0) node[right] {$x$};
\draw[->,name path=yaxis] (0,-0.1) -- (0,3.2) node[above] {$y$};
\foreach \x in {0,...,3}
\draw (\x,1pt) -- (\x,-3pt)
node[anchor=north] {\x};
\foreach \y in {0,...,3}
\draw (1pt,\y) -- (-3pt,\y)
node[anchor=east] {\y};
\draw[name path=plot,domain=0:3.2] plot (\x,{\x^2/3}) node[right] {$y=\frac{x^2}{3}$};
coordinate [name intersections={of= A2--A3 and plot,by=intersect-1}];
coordinate [name intersections={of= A1--A3 and plot,by=intersect-2}];
\filldraw[thick,fill=blue,fill opacity=0.4] (A1) -- (A2) -- (A3) -- cycle;
\end{tikzpicture}
\end{document}
Gracias por tu ayuda, sé que es una pregunta sencilla pero, para ser honesto, es mi primer gráfico en TeX en general.
Respuesta1
Puedes hacer esto usando el \clip
comando en TikZ. Para citar delManual de TikZ/PGF(sección 2.11, página 35):
Recortar es bastante fácil en TikZ. Puede utilizar el
\clip
comando para recortar todos los dibujos posteriores. Funciona como\draw
, sólo que no dibuja nada, sino que utiliza la ruta dada para recortar todo posteriormente.
Así que agregué dos clips a tu trama:
\clip (A1) -- (A2) -- (A3) -- (3,0) -- cycle;
\clip [domain=0:3.2] plot (\x, \x^2/3) -- (A2) -- (A1);
Editar:Ahora que sé lo que querías recortar, esto sigue siendo bastante fácil. Para el primer comando, soltamos -- (3,0)
o recortaríamos demasiado. Para el segundo comando, los -- (A2) -- (A1)
clipsarribala parábola. Si reemplazamos esto por -- (3.2,0) -- (0,0)
, entonces recortamosbajola línea. Vea la captura de pantalla y el código actualizados a continuación.
Para dejar claro qué están recortando estas dos líneas de código, aquí hay una captura de pantalla adicional:
La primera línea de código recorta el área dentro del borde discontinuo rojo. El segundo es el área dentro del borde de puntos azules.
El primero recorta el área entre las dos líneas. El segundo recorta el área sobre la parábola y se extiende para cubrir el área entre las líneas. Si no agregaba los puntos adicionales, se recortaría una línea recta hasta el origen, lo que omitiría parte del área que deseaba sombrear.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\coordinate (A1) at (0,0);
\coordinate (A2) at (1,3);
\coordinate (A3) at (3,2);
\draw[very thin,color=gray] (0,0) grid (3.2,3.2);
\draw[->,name path=xaxis] (-0.1,0) -- (3.2,0) node[right] {$x$};
\draw[->,name path=yaxis] (0,-0.1) -- (0,3.2) node[above] {$y$};
\foreach \x in {0,...,3}
\draw (\x,1pt) -- (\x,-3pt)
node[anchor=north] {\x};
\foreach \y in {0,...,3}
\draw (1pt,\y) -- (-3pt,\y)
node[anchor=east] {\y};
\draw[name path=plot,domain=0:3.2] plot (\x,{\x^2/3}) node[right] {$y=\frac{x^2}{3}$};
\draw (A1) -- (A2);
\draw (A2) -- (A3);
\draw (A1) -- (A3);
\clip (A1) -- (A2) -- (A3) -- cycle;
\clip [domain=0:3.2] plot (\x, \x^2/3) -- (3.2,0) -- (0,0);
\fill [blue, opacity=0.4] (0,0) rectangle (3,3);
\end{tikzpicture}
\end{document}
y se ve así:
Respuesta2
Es demasiado corto para ejercicios de mecanografía con PSTricks. No sé cuál quieres exactamente, así que te proporciono 2 casos de la siguiente manera.
Caso 1
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl,pst-plot}
\def\f{(x^2/3)}
\def\g{(2*x/3)}
\def\h{((-x+7)/2)}
\pstVerb{/I2P {AlgParser cvx exec} def}
\begin{document}
\begin{pspicture}[saveNodeCoors,algebraic,linejoin=2](-1,-1)(4,4)
\psaxes{->}(0,0)(-1,-1)(3.5,3.5)[$x$,0][$y$,90]
\pstInterFF[PointName=none,PointSymbol=none]{\f I2P}{\h I2P}{2}{A}
\pscustom*[linecolor=blue!50]
{
\psplot{0}{3}{\g}
\psplot{3}{N-A.x}{\h}
\psplot{N-A.x}{0}{\f}
\closepath
}
\psplot{0}{3.2}{\f}
\pspolygon(*3 {\g})(*1 {\h})
\uput[u](*3.2 {\f}){\scriptsize $f(x)=\frac{x^2}{3}$}
\end{pspicture}
\end{document}
Caso 2
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl,pst-plot}
\def\f{(x^2/3)}
\def\g{(2*x/3)}
\def\h{((-x+7)/2)}
\pstVerb{/I2P {AlgParser cvx exec} def}
\begin{document}
\begin{pspicture}[saveNodeCoors,algebraic,linejoin=2,PointName=none,PointSymbol=none](-1,-1)(4,4)
\psaxes{->}(0,0)(-1,-1)(3.5,3.5)[$x$,0][$y$,90]
\pstInterFF{\f I2P}{\g I2P}{2}{A}
\pstInterFF{\f I2P}{\h I2P}{2}{B}
\pscustom*[linecolor=blue!50]
{
\psplot{N-A.x}{3}{\g}
\psplot{3}{N-B.x}{\h}
\psplot{N-B.x}{N-A.x}{\f}
\closepath
}
\psplot{0}{3.2}{\f}
\pspolygon(*3 {\g})(*1 {\h})
\uput[u](*3.2 {\f}){\scriptsize $f(x)=\frac{x^2}{3}$}
\end{pspicture}
\end{document}
Notas:
La última versión pst-eucl
puede aceptar notación infija, por lo que I2P
ya no se necesita operador.
Respuesta3
Una solución de PSTricks:
\documentclass{article}
\usepackage{pst-plot}
\begin{document}
\begin{pspicture}[algebraic](-0.35,-0.4)(4.4,3.7)
\psaxes[
tickcolor = black!20,
xticksize = 0 3,
yticksize = 0 3
]{->}(0,0)(3.3,3.3)[$x$,0][$y$,90]
\pscustom*[
linecolor = blue!50
]{
\psline(3,2)(!177 sqrt 3 sub 4 div 31 177 sqrt sub 8 div)
\psplot{2}{2.576}{x^2/3} % plot from 2 to (sqrt(177)-3)/4
\psline(!2 4 3 div)(3,2)
\closepath
}
\psplot{0}{3.2}{x^2/3}
\uput[0](!3.2 256 75 div){$y = \frac{x^{2}}{3}$}
\pspolygon(0,0)(1,3)(3,2)
\end{pspicture}
\end{document}
Respuesta4
Una solución MetaPost. El área deseada se encuentra y se completa utilizando la práctica buildcycle
macro.
input mpcolornames;
input latexmp;
setupLaTeXMP(options="12pt", packages = "amsmath", textextlabel = enable, mode = rerun);
u := 1.5cm; xmin := -.5; xmax := 3.5; ymin := -.5; ymax := 3.5; len := 3bp;
vardef f(expr x) = (x**2)/3 enddef;
path p; p = origin -- (3, 2) -- (1, 3) -- cycle;
path curve; curve = origin
for i = 0.01 step 0.01 until 3:
-- (i, f(i))
endfor;
beginfig(1);
labeloffset := 6bp;
for i = 1 upto 3:
draw u*(i, 0) -- u*(i, ymax) withcolor LightGray;
draw u*(0, i) -- u*(xmax, i) withcolor LightGray;
draw (i*u, -len) -- (i*u, len); label.bot("$" & decimal i & "$", (i*u, 0));
draw (-len, i*u) -- (len, i*u); label.lft("$" & decimal i & "$", (0, i*u));
endfor;
labeloffset := 3bp;
label.llft("$O$", origin); label.bot("$x$", (xmax*u, 0)); label.lft("$y$", (0, ymax*u));
fill buildcycle(subpath(1, 2) of p, reverse curve, subpath (epsilon, 3) of p)
scaled u withcolor SlateBlue1;
draw p scaled u;
draw curve scaled u;
picture curvelabel;
curvelabel = thelabel.rt("$y=\dfrac{x^2}{3}$", u*point infinity of curve);
unfill bbox curvelabel; draw curvelabel;
drawarrow (xmin*u, 0) -- (xmax*u, 0);
drawarrow (0, ymin*u) -- (0, ymax*u);
endfig;
end.