
Мне нужно добавить оси к куче фигур в моем документе, я пытаюсь, tikz
но, может быть, есть более простой и элегантный способ сделать это (смотря на вас, overpic
)? Результат, которого я пытаюсь достичь, не такойэтот, мне нужны также топоры со стрелами.
У меня есть работающий MWE, но осивертикальноне выровнены (они должны бытьснаружи(на картинке) Я пробовал добавлять \vspace
s, но они, похоже, не работают так, как мне бы хотелось.
Заранее спасибо за вашу помощь!
МВЭ:
\documentclass{scrreprt}
\usepackage{subfig}
\usepackage{graphicx}
\usepackage{tikz}
\begin{document}
\begin{figure}[h!]
\vspace{-0.6cm}
\centering
\subfloat[]{%
\begin{tikzpicture}
\draw [->] (0,0) -- (0.5,0) node[right]{\footnotesize\(y\)};
\draw [->] (0,0) -- (0,0.5) node[above]{\footnotesize\(x\)};
\end{tikzpicture}
\hspace{-1cm}
\includegraphics[width=0.45\textwidth,height=1cm]{example-image-a}}
\quad
\subfloat[]{%
\begin{tikzpicture}
\draw [->] (0,0) -- (0.5,0) node[right]{\footnotesize\(y\)};
\draw [->] (0,0) -- (0,0.5) node[above]{\footnotesize\(x\)};
\end{tikzpicture}
\hspace{-1cm}
\includegraphics[width=0.45\textwidth,height=1cm]{example-image-a}}
\\
\subfloat[]{%
\includegraphics[width=0.45\textwidth,height=1cm]{example-image-a}}
\hspace{-0.9cm}
\begin{tikzpicture}
\draw [->] (0,0) -- (-0.5,0) node[left]{\footnotesize\(y\)};
\draw [->] (0,0) -- (0,0.5) node[above]{\footnotesize\(x\)};
\end{tikzpicture}
\quad
\subfloat[]{%
\includegraphics[width=0.45\textwidth,height=1cm]{example-image-a}
\hspace{-0.9cm}
\begin{tikzpicture}
\draw [->] (0,0) -- (-0.5,0) node[left]{\footnotesize\(y\)};
\draw [->] (0,0) -- (0,0.5) node[above]{\footnotesize\(x\)};
\end{tikzpicture}}
\caption{Foo}
\end{figure}
\end{document}
РЕДАКТИРОВАТЬЯ бы хотел, чтобы оси были примерно такими:
решение1
Если вы не хотите использовать тяжелое tikz
вооружение, достаточно режима изображения, чтобы нарисовать несколько стрелок:
\documentclass{scrreprt}
\usepackage{subfig}
\usepackage{graphicx}
%\usepackage{tikz}
\begin{document}
\begin{figure}[htbp]
\vspace{-0.6cm}
\centering
\subfloat[]{%
\setlength{\unitlength}{\textwidth}
\begin{picture}(.45,0.1)
\put(0,0){\includegraphics[width=0.45\textwidth,height=1cm]{example-image-a}}
\put(.46,-.01){\vector(-1,0){.07}}
\put(.46,-.01){\vector(0,1){.05}}
\put(.453,.045){x}
\put(.373,-.014){y}
\end{picture}
}
\caption{Foo}
\end{figure}
\end{document}
Второй подход с тяжелым оружием тикз:
\documentclass{scrreprt}
\usepackage{subfig}
\usepackage{graphicx}
\usepackage{tikz}
\begin{document}
\begin{figure}[htbp]
\vspace{-0.6cm}
\centering
\subfloat[]{%
\begin{tikzpicture}
\node (image) at (0,0) {\includegraphics[width=0.45\textwidth,height=1cm]{example-image-a}};
\draw [->] (image.south west) -- ++(0.5,0) node[right]{\footnotesize\textit{y}};
\draw [->] (image.south west) -- ++(0,0.5) node[above]{\footnotesize\textit{x}};
\end{tikzpicture}
}
\end{figure}
\end{document}
Не по теме: Я бы не использовал [h!]
плавающий спецификатор, это почти всегда гарантия плохого размещения изображения.
решение2
Может быть, вот так?
\documentclass{article}
\begin{document}
<<test,echo=F,fig.cap="Axis with background image and more.">>=
library(png)
ima <- readPNG("/usr/local/texlive/2018/texmf-dist/tex/latex/mwe/example-image-a.png")
plot(1:2, type='n', xlab="x", ylab="y",xlim=c(0,10),ylim=c(0,7.5),axes=F)
lim <- par()
u <- par("usr")
rasterImage(ima, u[1]+.5, u[3]+.5, u[2]-.5, u[4]-.5)
arrows(u[1], u[3], u[2], u[3], code = 2, xpd = TRUE)
arrows(u[1], u[3], u[1], u[4], code = 2, xpd = TRUE)
lines(c(1, 1.2, 1.35,4.5, 6, 8.3, 9.5), c(.6, 1.3, 0.9,2.7, 0.6, 4.7, 7.0), lwd=5, col="blue")
@
\end{document}
Конечно, это нужно R
и knitr
нужно компилировать.
Если вам нужна только маленькая ось:
\documentclass{article}
\begin{document}
<<test,echo=F,fig.cap="Axis with background image and more.">>=
library(png)
ima <- readPNG("/usr/local/texlive/2018/texmf-dist/tex/latex/mwe/example-image-a.png")
plot(1:2, type='n', xlab="", ylab="",xlim=c(0,10),ylim=c(0,7.5),axes=F)
lim <- par()
u <- par("usr")
rasterImage(ima, u[1]+.5, u[3]+.5, u[2]-.5, u[4]-.5)
arrows(u[1], u[3], u[2]/3, u[3], code = 2, xpd = TRUE)
arrows(u[1], u[3], u[1], u[4]/3, code = 2, xpd = TRUE)
axis(1, at=u[2]/6, tck=0, labels="x")
axis(2, at=u[4]/6, tck=0, labels="y")
lines(c(1, 1.2, 1.35,4.5, 6, 8.3, 9.5), c(.6, 1.3, 0.9,2.7, 0.6, 4.7, 7.0), lwd=5, col="blue")
@
\end{document}