Einfügen von Grafiken in Asymptote- oder PGFPlots

Einfügen von Grafiken in Asymptote- oder PGFPlots

Wie können andere Grafiken in Asymptote oder pgfplots eingefügt werden? Das Folgende ist ein MWE in pgfplots, das drei Abbildungen im Dokument erstellt. Die Hauptabbildung, in die ich Grafiken einfügen möchte, ist eine pgfplot-Grafik und die anderen beiden sind Vektor- oder Rastergrafiken.

\documentclass{article}
\usepackage{pgfplots}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{graphicx}

\pgfplotsset{compat=newest}

\begin{document}
Figure 1 is the main figure that will be used for the insertion of a vector or a raster graphics.
\begin{figure}
    \begin{tikzpicture}
        \begin{axis}[
            colormap={bw}{gray(0cm)=(0); gray(1cm)=(1)}]
        \addplot+[scatter,only marks,
             domain=0:8,samples=100]
            {exp(x)};
        \end{axis}
    \end{tikzpicture}
    \caption{This is the main figure.}
\end{figure}

Figure 2 is a graphics which I want to be inside figure 1, which is a vector graphics. I want to place it in the upper left corner position.
\begin{figure}
    \begin{tikzpicture}
        \begin{axis}[colormap/bluered]
        \addplot+[scatter,
             scatter src=x,samples=50]
            {sin(deg(x))};
        \end{axis}
    \end{tikzpicture}
    \caption{This figure needs to be inside figure 1.}
\end{figure}

Figure 3 is another graphics which I want to be placed inside figure 1 in the upper left corner.
\begin{figure}
    \includegraphics[width=\linewidth]{piv.jpg}
    \caption{This figure needs to be inside figure 1}.
    \end{figure}

\end{document}

Dies ist Abbildung 1, eine pgfplots-Grafik. Dies ist Abbildung 1

Dies ist Abbildung 2, eine pgfplots-Grafik. Dies ist Abbildung 2

Dies ist Abbildung 3, ein JPG-Bild.

Dies ist Abbildung 3

Dies ist eine Kombination aus Abbildung 1 und Abbildung 2. Abbildung 2 ist in Abbildung 1 in der oberen linken Ecke platziert. Ich möchte, dass diese Abbildung eine Vektorgrafik ist Dies ist eine Kombination aus Abbildung 1 und Abbildung 2

Dies ist eine Kombination aus Abbildung 1 und Abbildung 3. Abbildung 3 ist in Abbildung 1 in der oberen linken Ecke platziert. Abbildung 1 soll weiterhin eine Vektorgrafik sein. Dies ist eine Kombination aus Abbildung 1 und Abbildung 3

Ich wäre dankbar, wenn mir jemand helfen könnte, wie ich andere Vektorgrafiken sowie Rastergrafiken in Asymptote und pgfplots einfügen kann.

Antwort1

Für das pgfplotsInnere pgfplotskönnen Sie die beiden Diagramme im Code kombinieren, wie inWie kann das Diagramm in \groupplot horizontal und vertikal verschoben werden?

Fügen Sie für das Bild Folgendes in die axisUmgebung von Abbildung 1 ein:

\node [above right] at (rel axis cs:0.2,0.4) {\includegraphics[width=2.5cm]{piv}};

Die genauen Koordinaten, die die Lage der linken unteren Ecke des Bildes sowie die Breite angeben, müssen möglicherweise geändert werden. rel axis csist ein Koordinatensystem, das (0,0)in der linken unteren Ecke des Bildes axisund (1,1)in der rechten oberen Ecke hat.

Beachten Sie, dass, wenn Sie beispielsweise den pgfplotsPlot als vektorisiertes PDF haben, diese Einbindung auf diese Weise nicht zu einer Rasterung führt, Sie können diese Methode also für beides verwenden.

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{pgfplots}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{graphicx}

\pgfplotsset{compat=newest}

\begin{document}
\begin{figure}
\centering
    \begin{tikzpicture}
        \begin{axis}[
            colormap={bw}{gray(0cm)=(0); gray(1cm)=(1)}]
        \addplot+[scatter,only marks,
             domain=0:8,samples=100]
            {exp(x)};

            \coordinate (otheraxis) at (rel axis cs:0.2,0.4);
        \end{axis}
        \begin{axis}[colormap/bluered,at={(otheraxis)},width=5cm]
        \addplot+[scatter,
             scatter src=x,samples=50]
            {sin(deg(x))};
        \end{axis}
    \end{tikzpicture}
    \caption{This is the main figure.}
\end{figure}

\begin{figure}
\centering
    \begin{tikzpicture}
        \begin{axis}[
            colormap={bw}{gray(0cm)=(0); gray(1cm)=(1)}]
        \addplot+[scatter,only marks,
             domain=0:8,samples=100]
            {exp(x)};

            \node [above right] at (rel axis cs:0.1,0.25) {\includegraphics[width=3cm]{piv}};
        \end{axis}
        \end{tikzpicture}

    \caption{This is the main figure.}
\end{figure}

\end{document}

Antwort2

Wie bei Asymptote können Sie den labelBefehl verwenden, um externe EPS-Grafiken einzubinden, wie indas Handbuch(Version 2.24, S. 19):

Die Funktion string graphic(string name, string options="")gibt einen String zurück, der zum Einbinden einer gekapselten PostScript-Datei (EPS) verwendet werden kann. Dabei ist Name der Name der einzubindenden Datei und Optionen ist ein String, der eine durch Kommas getrennte Liste optionaler Parameter für Begrenzungsrahmen ( bb=llx lly urx ury), Breite ( width=value), Höhe ( height=value), Drehung ( angle=value), Skalierung ( scale=factor), Ausschnitt ( clip=bool) und Entwurfsmodus ( draft=bool) enthält. Die layer()Funktion kann verwendet werden, um zu erzwingen, dass zukünftige Objekte über dem eingebundenen Bild gezeichnet werden:

label(graphic("file.eps","width=1cm"),(0,0),NE);
layer();

Antwort3

Asymptote unterstützt den direkten Import des externen Bildes. Sie können den Beispielcode im GitHub-Quellrepo sehen.orthocenter.asy, die PNG-Datei befindet sich hierpiicon.pngals Referenz.

import geometry;
import math;

size(7cm,0);

if(!settings.xasy && settings.outformat != "svg") settings.tex="pdflatex";

real theta=degrees(asin(0.5/sqrt(7)));

pair B=(0,sqrt(7));
pair A=B+2sqrt(3)*dir(270-theta);
pair C=A+sqrt(21);
pair O=0;

pair Ap=extension(A,O,B,C);
pair Bp=extension(B,O,C,A);
pair Cp=extension(C,O,A,B);

perpendicular(Ap,NE,Ap--O,blue);
perpendicular(Bp,NE,Bp--C,blue);
perpendicular(Cp,NE,Cp--O,blue);

draw(A--B--C--cycle);

draw("1",A--O,-0.25*I*dir(A--O));
draw(O--Ap);
draw("$\sqrt{7}$",B--O,LeftSide);
draw(O--Bp);
draw("4",C--O);
draw(O--Cp);

dot("$O$",O,dir(B--Bp,Cp--C),red);
dot("$A$",A,dir(C--A,B--A),red);
dot("$B$",B,NW,red);
dot("$C$",C,dir(A--C,B--C),red);
dot("$A'$",Ap,dir(A--Ap),red);
dot("$B'$",Bp,dir(B--Bp),red);
dot("$C'$",Cp,dir(C--Cp),red);

label(graphic("piicon.png","width=2.5cm, bb=0 0 147 144"),Ap,5ENE);

Beachten Sie die letzte Anweisung des Codes. Hier ist der Ergebnis-Screenshot des PDFs. Screenshot des generierten PDF

verwandte Informationen