
Wir betrachten einen kleinen Code, pgfplots
bei dem das äußere Gitter rechteckig ist, wie dieses mit diesem MWE erstellte Bild:
\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}
Aber ist dieses rechteckige Raster fest, oder ist es möglich, auch ein Bild wie dieses zu erhalten, bei dem die Kanten abgerundet sind und eingefärbt werden können und bei dem man innerhalb des abgerundeten Rechtecks verschiedene Grafiken zeichnen kann?
Antwort1
Dies verwendet einfaches TikZ mit intersections
Bibliothek für den Schnittpunkt. Beachten Sie, dass die scope
Umgebung verschachtelt werden kann, mehrere \clip
s werden zum Füllen verwendet. Wenn Sie das Rechteck mit mehr abgerundeten Ecken wünschen, verwenden Sie einfach [rounded corners=3mm]
zB in der Definition von \bb
.
Ich glaube, dass pgfplots
sich das mit den entsprechenden Optionen in der Umgebung auch leicht zeichnen lässt axis
. Mit einfachem TikZ fühle ich mich jedoch wohler.
\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}
Antwort2
Dies alles lässt sich mit einfachen pgfplots
Mitteln erledigen.
- Der abgerundete Rahmen ist so einfach wie
axis background/.style={rounded corners=4mm,draw=blue}
, - Das Entfernen der Pfeile ist so einfach wie
every inner x axis line/.append style={-},every inner y axis line/.append style={-}
: - Die Schattierung kann mit erfolgen
fillbetween
. - Bei den Formeln handelt es sich um einfache Beschriftungen/Pins.
- Die Max- und Min-Werte können anhand der
xmin
usw. Werte mit automatisch angehängt werdenafter end axis/.code
.
Der Einfachheit halber habe ich die meisten dieser Dinge in einem Stil namens gesammelt 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}
Antwort3
Als Ausgangspunkt verwende ich die Antwort von Dr. Manuel Kuehner (da sie ein einfacheres Diagramm verwendet). Mit Hilfe der fit
TikZ-Bibliothek:
\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}
Bearbeiten: Beschriftungen für Koordinaten außerhalb des f
Knotens hinzugefügt (sie sind \Large
und red
, so dass Sie leicht erkennen können, dass sie auf dem Bild sind, diese Einstellungen können Sie leicht ändern)
Antwort4
- Nur eine Idee/ein Anfang (gehe jetzt ins Bett).
- Platzieren von zwei Parzellen übereinander.
- Sie haben die gleiche Größe, aber unterschiedliche Achsenoptionen.
scale only axis
ist wichtig.
\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}