Inserindo gráficos em assíntota ou pgfplots

Inserindo gráficos em assíntota ou pgfplots

Como outros gráficos podem ser inseridos em Asymptote ou pgfplots? A seguir está um MWE em pgfplots que cria três figuras no documento. A figura principal na qual desejo inserir gráficos é um gráfico pgfplot e as outras duas são gráficos vetoriais ou raster.

\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}

Esta é a figura 1, que é um gráfico pgfplots. Esta é a figura 1

Esta é a figura 2, que é um gráfico pgfplots. Esta é a figura 2

Esta é a figura 3, que é uma imagem jpg.

Esta é a figura 3

Isso é combinado com a figura 1 e a figura 2. A figura 2 é colocada dentro da figura 1 no canto superior esquerdo. Eu gostaria que esta figura fosse um gráfico vetorial Isso é combinado com a figura 1 e a figura 2

Isso é combinado com a figura 1 e a figura 3. A figura 3 é colocada dentro da figura 1 no canto superior esquerdo. Eu gostaria que a figura 1 ainda fosse um gráfico vetorial. Isso é combinado com a figura 1 e a figura 3

Eu ficaria grato se alguém pudesse me ajudar como posso inserir outros gráficos vetoriais, bem como gráficos raster em Asymptote e pgfplots.

Responder1

Para o pgfplotsinterior pgfplotsvocê poderia combinar os dois gráficos no código, como visto emComo o gráfico em \groupplot poderia ser movido horizontal e verticalmente?

Para a imagem, adicione o seguinte dentro do axisambiente da figura 1:

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

As coordenadas exatas, que especificam a localização do canto inferior esquerdo da imagem, e a largura provavelmente deverão ser modificadas. rel axis csé um sistema de coordenadas que possui (0,0)no canto inferior esquerdo do axise (1,1)no canto superior direito.

Observe que se você tiver, por exemplo, o pgfplotsgráfico como um PDF vetorizado, incluí-lo dessa forma não irá rasterizá-lo, portanto você pode usar este método para ambos.

insira a descrição da imagem aqui

\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}

Responder2

Quanto ao Assíntota, você pode usar o labelcomando para incluir gráficos EPS externos, conforme explicado emo manual(versão 2.24, pág. 19):

A função string graphic(string name, string options="")retorna uma string que pode ser usada para incluir um arquivo PostScript encapsulado (EPS). Aqui, nome é o nome do arquivo a ser incluído e opções é uma string contendo uma lista separada por vírgula de caixa delimitadora opcional ( bb=llx lly urx ury), largura ( width=value), altura ( height=value), rotação ( angle=value), escala ( scale=factor), recorte ( clip=bool) e parâmetros do modo rascunho ( draft=bool). A layer()função pode ser usada para forçar o desenho de objetos futuros sobre a imagem incluída:

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

Responder3

Asymptote suporta a importação direta da imagem externa, você pode ver seu código de amostra em seu repositório de origem GitHubortocentro.asy, o arquivo png está localizado aquipiicon.pngpara uma referência.

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);

Observe a última instrução do código. Aqui está a captura de tela do resultado do pdf. captura de tela do pdf gerado

informação relacionada