Как можно вставить другую графику в Asymptote или pgfplots? Ниже приведен MWE в pgfplots, который создает три фигуры в документе. Основная фигура, в которую я хочу вставить графику, — это графика pgfplot, а две другие — векторная или растровая графика.
\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}
Это рисунок 1, представляющий собой график pgfplots.
Это рисунок 2, представляющий собой график pgfplots.
Это рисунок 3, представляющий собой изображение в формате jpg.
Это объединенные рисунок 1 и рисунок 2. Рисунок 2 находится внутри рисунка 1 в верхнем левом углу. Я хотел бы, чтобы этот рисунок был векторной графикой
Это объединенные рисунок 1 и рисунок 3. Рисунок 3 помещен внутри рисунка 1 в верхнем левом углу. Я бы хотел, чтобы рисунок 1 все еще был векторной графикой.
Я был бы благодарен, если бы кто-нибудь помог мне вставить другую векторную графику, а также растровую графику в Asymptote и pgfplots.
решение1
Для pgfplots
внутреннего использования pgfplots
вы можете объединить два графика в коде, как показано на рисункеКак можно перемещать график в \groupplot по горизонтали и вертикали?
Для изображения добавьте следующее внутри axis
окружения рисунка 1:
\node [above right] at (rel axis cs:0.2,0.4) {\includegraphics[width=2.5cm]{piv}};
Точные координаты, которые определяют местоположение нижнего левого угла изображения, и ширину, вероятно, следует изменить. rel axis cs
— это система координат, которая имеет (0,0)
в нижнем левом углу axis
, а (1,1)
в верхнем правом.
Обратите внимание, что если, например, у вас есть pgfplots
график в виде векторизованного PDF-файла, то включение его таким образом не приведет к его растеризации, поэтому вы можете использовать этот метод в обоих случаях.
\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}
решение2
Что касается Asymptote, вы можете использовать label
команду для включения внешней EPS-графики, как описано вруководство(версия 2.24, стр. 19):
Функция
string graphic(string name, string options="")
возвращает строку, которую можно использовать для включения инкапсулированного файла PostScript (EPS). Здесь name — это имя включаемого файла, а options — это строка, содержащая разделенный запятыми список необязательных параметров ограничивающего прямоугольника (bb=llx lly urx ury
), ширины (width=value
), высоты (height=value
), поворота (angle=value
), масштабирования (scale=factor
), обрезки (clip=bool
) и режима черновика (draft=bool
). Функциюlayer()
можно использовать для принудительного рисования будущих объектов поверх включенного изображения:
label(graphic("file.eps","width=1cm"),(0,0),NE);
layer();
решение3
Asymptote поддерживает прямой импорт внешнего изображения, пример кода можно посмотреть в исходном репозитории GitHub.ортоцентр.легкий, файл png находится здесьpiicon.pngдля справки.
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);
Обратите внимание на последний оператор кода. Вот скриншот результата pdf.