
Я пытаюсь заполнить область под кривой sin(x)/x. Вот мой код:
\PassOptionsToPackage{usenames,dvipsnames,table,x11names}{xcolor}
\documentclass[a4paper, 12pt]{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{pgfplots}
\usepackage{tkz-euclide}
\pgfplotsset{compat=1.15}
\usetikzlibrary{arrows,shadows,positioning, calc, decorations.markings, hobby, quotes,angles,decorations.pathreplacing,intersections}
\usepgfplotslibrary{polar,colormaps,fillbetween}
\usepgflibrary{shapes.geometric}
\usepackage{xcolor}
\begin{document}
\begin{figure}[ht]
\centering
\begin{tikzpicture}[scale=1.5,line width=1pt]
\begin{axis}[
color= black,
xmin=-1,
xmax=7.9,
ymin=-1,
ymax=2,
axis equal image,
axis lines=middle,
font=\scriptsize,
xtick distance=1,
ytick distance=1,
%xticklabels={},
%yticklabels={},
inner axis line style={stealth-stealth},
xlabel = {$x$},
ylabel = {$f(x)$},
ticks=none,
]
\addplot[black, opacity = 0, domain=0:10, name path = 1]{0};
\addplot[Tan, smooth, domain=0.01:7.5, samples = 300, name path=2, thick] {sin(deg(x))/x};
%\addplot[Tan, fill opacity=0.25] fill between [of=1 and 2,soft clip={domain=0:3.1415}];
\end{axis}
\end{tikzpicture}
\caption{Integrating $\sin(x)/x$ from $0 \le x < \infty$.}
\label{1}
\end{figure}
\end{document}
У меня код находится в более крупном документе, поэтому вот вывод:
Когда я раскомментирую строку, чтобы заполнить область, происходит следующее:
Есть заметный вертикальный зазор и изображение смещено влево. Есть идеи, почему это происходит?
решение1
Виновником является scale=1.5
, которого вы должны передать axis
, а не tikzpicture
. Япредполагатьвы путаете pgfplots
иначе, см.этот ответ. Если вы хотите получить объяснение на базовом уровне, боюсь, я не смогу его предоставить, но, учитываяэтот ответОдной из моих первых догадок было изменить положение scale
, и, кажется, это сработало. Обратите внимание, что библиотека pgfplots fillbetween
загружает intersections
, но немного продвинутую версию, поэтому вам не следует загружать intersections
(снова). Я также удалил tkz-euclide
и неиспользуемые библиотеки (чтобы сохранить код аккуратным), но вы можете восстановить их, и код все равно будет работать так, как и должен.
\PassOptionsToPackage{usenames,dvipsnames,table,x11names}{xcolor}
\documentclass[a4paper, 12pt]{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{pgfplots}
%\usepackage{tkz-euclide}
\pgfplotsset{compat=1.15}
\usepgfplotslibrary{%polar,colormaps,
fillbetween}
% \usetikzlibrary{arrows,shadows,positioning, calc, decorations.markings, hobby, quotes,angles,decorations.pathreplacing}
% \usepgflibrary{shapes.geometric}
%\usepackage{xcolor}
\begin{document}
\begin{figure}[ht]
\centering
\begin{tikzpicture}[line width=1pt]
\begin{axis}[scale=1.5,
color= black,
xmin=-1,
xmax=7.9,
ymin=-1,
ymax=2,
axis equal image,
axis lines=middle,
font=\scriptsize,
xtick distance=1,
ytick distance=1,
%xticklabels={},
%yticklabels={},
inner axis line style={stealth-stealth},
xlabel = {$x$},
ylabel = {$f(x)$},
ticks=none,
]
\addplot[black, opacity = 0, domain=0:10, name path = 1]{0};
\addplot[Tan, smooth, domain=0.01:7.5, samples = 300, name path=2, thick] {sin(deg(x))/x};
\addplot[Tan, fill opacity=0.25] fill between [of=1 and 2,soft clip={domain=0:3.1415}];
\end{axis}
\end{tikzpicture}
\caption{Integrating $\sin(x)/x$ from $0 \le x < \infty$.}
\label{1}
\end{figure}
\end{document}