
Consideramos un pequeño código pgfplots
donde la cuadrícula externa es rectangular, como esta imagen creada con este MWE:
\documentclass[a4paper,12pt]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.15}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\end{axis}
\end{tikzpicture}
\end{document}
Pero esta cuadrícula rectangular es fija o ¿es posible obtener también una imagen como esta donde los bordes son redondeados y se pueden colorear y donde se pueden dibujar diferentes gráficos dentro del rectángulo redondeado?
Respuesta1
Esto utiliza TikZ simple con intersections
biblioteca para el punto de intersección. Tenga en cuenta que scope
el entorno se puede anidar; \clip
se utilizan varios s para rellenar. Si desea el rectángulo con esquinas más redondeadas, simplemente use, [rounded corners=3mm]
por ejemplo, en la definición de \bb
.
Creo que pgfplots
esto también se puede sacar fácilmente, con opciones adecuadas en el axis
entorno. Sin embargo, TikZ simple me hace sentir más cómodo.
\documentclass[tikz,border=3mm]{standalone}
\usepackage{amsmath}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[scale=2]
\def\bb{[rounded corners] (-1,-1) rectangle (2,1.5)}
\def\curveA{plot[domain=-1:2,smooth,samples=100] (\x,{\x/(sqrt(1+\x*\x))})}
\def\curveB{plot[domain=-1:2,smooth,samples=100](\x,{pow(\x,4)-\x})}
\begin{scope} \clip \bb;
\begin{scope}
\clip \curveA|-cycle;
\clip \curveB--cycle;
\fill[cyan!20] \bb;
\end{scope}
\draw (-1,0)--(2,0) (0,-1)--(0,1.5);
\draw[magenta,thick,name path=A] \curveA;
\draw[cyan,thick,name path=B] \curveB;
\path[name intersections={of=A and B}] (intersection-2) node[cyan,rectangle,minimum size=2mm,draw,thick]{};
\end{scope}
\draw[cyan] \bb;
\foreach \i in {-.5,0,...,1.5} \draw (\i,.05)--(\i,-.05);
\foreach \j in {-.5,0,...,1} \draw (.05,\j)--(-.05,\j);
\path
(-1,0) node[left]{$-1$}
(2,0) node[right]{$2$}
(0,-1) node[below]{$-1$}
(0,1.5) node[above]{$1.5$}
(1.2,-.5) node{$y=x^4-x$}
(.6,1.2) node (N) {$y=\dfrac{x}{\sqrt{x^2+1}}$};
\draw[-stealth] (N)--+(-60:.6);
\end{tikzpicture}
\end{document}
Respuesta2
Todo esto se puede hacer con pgfplots
herramientas sencillas.
- El marco redondeado es tan simple como
axis background/.style={rounded corners=4mm,draw=blue}
, - Deshacerse de las flechas es tan simple como
every inner x axis line/.append style={-},every inner y axis line/.append style={-}
, - El sombreado se puede realizar con
fillbetween
. - Las fórmulas son etiquetas/alfileres simples.
- Los valores máximo y mínimo se pueden adjuntar automáticamente en función de los
xmin
valores y así sucesivamente conafter end axis/.code
.
Para tu comodidad, recopilé la mayoría de estas cosas en un estilo llamado Sebastiano
.
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\pgfplotsset{Sebastiano/.style={xticklabel=\empty,yticklabel=\empty,
axis lines = center,
every inner x axis line/.append style={-},
every inner y axis line/.append style={-},
axis background/.style={rounded corners=4mm,draw=blue},
before end axis/.code={\path (0,0) coordinate (O);},
after end axis/.code={
\path
(current axis.east|-O) node[right]
{\pgfmathprintnumber{\pgfkeysvalueof{/pgfplots/xmax}}}
(current axis.west|-O) node[left]
{\pgfmathprintnumber{\pgfkeysvalueof{/pgfplots/xmin}}}
(current axis.north-|O) node[above]
{\pgfmathprintnumber{\pgfkeysvalueof{/pgfplots/ymax}}}
(current axis.south-|O) node[below]
{\pgfmathprintnumber{\pgfkeysvalueof{/pgfplots/ymin}}};
}
}}
\usepgfplotslibrary{fillbetween}
\begin{document}
\begin{tikzpicture}
%
\begin{axis}[Sebastiano,width =12cm,
xmin = -1,xmax = 2,
ymin = -1,ymax = 1.5,
domain=-1:2,smooth]
\addplot[name path=A,color=magenta,thick] {x/sqrt(1+x*x)}
coordinate[pos=0.7,pin={[black,pin edge={stealth-,thick}]100:{$\displaystyle y=\frac{x}{\sqrt{1+x^2}}$}}](pA);
\addplot[name path=B,color=cyan,thick] {x^4-x}
coordinate[pos=0.19,label={[black]below right:{$\displaystyle y=x^4-x$}}](pB);
\addplot fill between [of=A and B,
split,
every segment no 0/.style={fill=none},
every segment no 1/.style={cyan,opacity=50},
every segment no 2/.style={fill=none},
];
\end{axis}
%
\end{tikzpicture}
\end{document}
Respuesta3
Como punto de partida, utilizo la respuesta del Dr. Manuel Kuehner (ya que utiliza un diagrama más simple). Con la ayuda de la fit
biblioteca TikZ:
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{fit}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[name=PLOT,
width = 80mm,
height= 60mm,
xmin = -1.2,
xmax = 2.2,
ymin = -1.3,
ymax = 4.3,
axis lines = center,
scale only axis
]
\addplot[
domain = 0:2,
red,
line width = 1pt
]
{x^2};
\coordinate (O) at (0,0);
\end{axis}
%
\node (f) [draw=blue, thick, rounded corners = 5mm,
inner sep=0pt, fit=(PLOT)] {};
\path (O-|f.west) node[lbl, left] {$-1$} (O-|f.east) node[lbl,right] {$2$}
(O|-f.north) node[lbl,above] {$1.5$} (O|-f.south) node[lbl,below] {$-1$};
\end{tikzpicture}
\end{document}
Editar: se agregaron etiquetas de coordenadas fuera del f
nodo (son \Large
y red
, que se ven fácilmente, que están en la imagen, esta configuración se puede cambiar fácilmente)
Respuesta4
- Sólo una idea/comienzo (ir a la cama ahora).
- Colocando dos parcelas una encima de la otra.
- Tienen el mismo tamaño pero diferentes opciones de ejes.
scale only axis
es importante.
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
%
\begin{axis}[
width = 80mm,
height = 60mm,
xmin = -1.2,
xmax = 2.2,
ymin = -1.3,
ymax = 4.3,
axis x line = center,
axis y line = center,
%axis line style = {rounded corners = 4mm},
scale only axis
]
\addplot[
domain = 0:2,
red,
line width = 1pt
]
{x^2};
\end{axis}
%
\begin{axis}[
width = 80mm,
height = 60mm,
xmin = -1.2,
xmax = 2.2,
ymin = -1.3,
ymax = 4.3,
axis line style = {rounded corners = 5mm, blue},
scale only axis,
ticks = none
]
\end{axis}
%
\end{tikzpicture}
\end{document}