我正在尝试重现类似的事情这使用函数x^-1
,但无论我尝试什么选项,我似乎都无法使图形看起来正确。
这是我当前的代码:
\documentclass[border=5mm]{standalone}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xtick={0,1,3,5,7,9,11,13,15,17},ytick={0,...,1.5},
xmax=18,ymax=1.2,ymin=0,xmin=0,
enlargelimits=true,
axis lines=middle,
clip=false,
domain=0:17,
axis on top
]
\addplot [draw=red, fill=red!10, ybar interval, samples=9, domain=1:17]
{x^-1}\closedcycle;
\addplot [draw=green, fill=green!10, const plot mark right, samples=9, domain=1:17]
{x^-1}\closedcycle;
\addplot[smooth, thick,domain=1:17,samples=40]{x^-1};
\end{axis}
\end{tikzpicture}
\end{document}
这是当前的输出:
我怎样才能使图表看起来正确,绿色条带有绿色轮廓,而第一个红色条左侧没有绿色轮廓(参见上面的输出)?
答案1
您可以通过对两个图都使用样式来解决此问题,但通过使用而不是来ybar interval
反转较低总和的方向:domain=17:1
domain=1:17
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xtick={0,1,3,5,7,9,11,13,15,17},ytick={0,...,1.5},
xmax=18,ymax=1.2,ymin=0,xmin=0,
enlargelimits=true,
axis lines=middle,
clip=false,
domain=0:17,
axis on top
]
\addplot [draw=red, fill=red!10, ybar interval, samples=9, domain=1:17]
{x^-1}\closedcycle;
\addplot [draw=green, fill=green!10, ybar interval, samples=9, domain=17:1]
{x^-1}\closedcycle;
\addplot[smooth, thick,domain=1:17,samples=40]{x^-1};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
您可以将下方的矩形放在scope
环境中,并clip
放置在正确的高度。尝试替换
\addplot [draw=green, fill=green!10, const plot mark right, samples=9, domain=1:17]
{x^-1}\closedcycle;
和
\begin{scope}
\clip (0,0) rectangle (6.5cm,1.6cm);
\addplot [draw=green, fill=green!10, const plot mark right, samples=9, domain=1:17]
{x^-1}\closedcycle;
\end{scope}
我反复试验,找到了 6.5cm 和 1.6cm 这两个值。不知道如何自动计算这些值。另外,我的版本pgfplots
是 1.5,所以这些值可能需要调整。