2 个审查标记,2 种不同颜色

2 个审查标记,2 种不同颜色

我正在尝试创建一个包含两个分布、两个不同的审查点和两种不同颜色的图。我已成功创建了两个分布并赋予它们不同的颜色。我还创建了两个审查点,但无法将其中一个审查点的颜色更改为红色。我尝试了几种组合,但似乎总是将两个审查点绘制在同一颜色下。有什么建议吗?我附上了一张图片和代码。非常感谢!

\begin{frame}
\frametitle{Insert title}


\begin{figure}[!ht]
\begin{center}
\begin{tikzpicture}[
    declare function={gamma(\z)=
    2.506628274631*sqrt(1/\z)+ 0.20888568*(1/\z)^(1.5)+ 0.00870357*(1/\z)^(2.5)- (174.2106599*(1/\z)^(3.5))/25920- (715.6423511*(1/\z)^(4.5))/1244160)*exp((-ln(1/\z)-1)*\z;},
    declare function={gammapdf(\x,\k,\theta) = 1/(\theta^\k)*1/(gamma(\k))*\x^(\k-1)*exp(-\x/\theta);}
%    declare function={gammapdf(\x,\k,\theta) = 1/(\theta^\k)*1/(gamma(\k))*\x^(\k-1)*exp(-\x/\theta);}
]

\begin{axis}[
  no markers, domain=0:7.0, samples=100,
  axis lines=left, xlabel=$y_t^i$, ylabel=$f_y(.)$,
  every axis y label/.style={at=(current axis.above origin),anchor=east},
  every axis x label/.style={at=(current axis.right of origin),anchor=north},
  major x grid style={draw=cyan!50!cyan},
  height=6cm, width=11cm,
  %xtick={6.5}, 
  xtick style={color=cyan},
  xtick={6.0,6.5}, 
  ytick=\empty, 
  %xticklabels={},
  xticklabels={$\bar y$, $\bar y'$},
  %xticklabels={$\bar n(\theta_t)$},
  %xticklabels={$\bar n$, $\bar n$},
  %xticklabels={$\bar n(\theta^2_t$), $\bar n(\theta^1_t)$},
  enlargelimits=false, clip=false, axis on top,
  grid = major,
  xmax=10
  ]

\addplot [very thick,red!50!red,domain=0:6.5] {gammapdf(x,9,0.5)};
\addplot [very thick,cyan!50!cyan,domain=0:6] {gammapdf(x+0.5,9,0.5)};
%\addplot [fill=cyan!20, draw=none, domain=0:6.5] {gammapdf(x,9,0.5)} \closedcycle;


\end{axis}
\end{tikzpicture}
\end{center}
\caption{Insert Caption}
\end{figure}

\end{frame}

在此处输入图片描述

答案1

您正在使用(可能滥用)网格来绘制审查点,并且每个网格(majorminor)都有一种样式;不能只针对其中的一部分进行更改grid

最初的可能性是,xtick一个审查点使用 ,extra x ticks另一个审查点使用 。一个可以使用major网格样式,另一个可以使用独立设置的minor网格样式。

但这种方法很笨拙,如果要绘制的审查点超过 2 个,或者你想做更复杂的造型,这种方法就会失效。所以,在这种情况下,我认为最简单的方法是手动绘制审查点,方法是

\draw[cyan] (6.0,0) -- ++(rel axis cs:0,1);
\draw[red] (6.5,0) -- ++(rel axis cs:0,1);

自动绘制rel axis cs:0,1到轴“框”的顶部,无论缩放比例和/或限制如何。

你甚至可以用命令来做到这一点;比如

\newcommand{\censorpt}[2][]{\draw[#1] (#2,0) -- ++(rel axis cs:0,1);}

用作\censorpt[dashed,green]{5.5}

我还删除了多余的颜色混合(red!50!red相当于red)并添加了typeset ticklabels with strut以便更好地对齐刻度标签。

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\newcommand{\censorpt}[2][]{\draw[#1] (#2,0) -- ++(rel axis cs:0,1);}

\begin{document}
\begin{tikzpicture}[
    declare function={gamma(\z)=
    2.506628274631*sqrt(1/\z)+ 0.20888568*(1/\z)^(1.5)+ 0.00870357*(1/\z)^(2.5)- (174.2106599*(1/\z)^(3.5))/25920- (715.6423511*(1/\z)^(4.5))/1244160)*exp((-ln(1/\z)-1)*\z;},
    declare function={gammapdf(\x,\k,\theta) = 1/(\theta^\k)*1/(gamma(\k))*\x^(\k-1)*exp(-\x/\theta);}
]

\begin{axis}[
  no markers, domain=0:7.0, samples=100,
  axis lines=left, xlabel=$y_t^i$, ylabel=$f_y(.)$,
  every axis y label/.style={at=(current axis.above origin),anchor=east},
  every axis x label/.style={at=(current axis.right of origin),anchor=north},
  major x grid style={draw=cyan},
  height=6cm, width=11cm,
  %xtick={6.5}, 
  xtick={6.0,6.5}, 
  ytick=\empty, 
  %xticklabels={},
  xticklabels={$\bar y$, $\bar y'$},
  %xticklabels={$\bar n(\theta_t)$},
  %xticklabels={$\bar n$, $\bar n$},
  %xticklabels={$\bar n(\theta^2_t$), $\bar n(\theta^1_t)$},
  enlargelimits=false, clip=false, axis on top,
  xmax=10,
  typeset ticklabels with strut,
  ]

\addplot [very thick,red,domain=0:6.5] {gammapdf(x,9,0.5)};
\addplot [very thick,cyan,domain=0:6] {gammapdf(x+0.5,9,0.5)};
\draw[cyan] (6.0,0) -- ++(rel axis cs:0,1);
\draw[red] (6.5,0) -- ++(rel axis cs:0,1);
\censorpt[green,dashed]{5.5}
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述


typeset ticklabels with strut和默认axis cs坐标系是 v1.11 的一部分pgfplots。如果出于某种原因仍使用旧版本,您可以使用

\documentclass{standalone}
\usepackage{pgfplots}
\newcommand{\censorpt}[2][]{\draw[#1] (axis cs:#2,0) -- ++(rel axis cs:0,1);}

\begin{document}
\begin{tikzpicture}[
    declare function={gamma(\z)=
    2.506628274631*sqrt(1/\z)+ 0.20888568*(1/\z)^(1.5)+ 0.00870357*(1/\z)^(2.5)- (174.2106599*(1/\z)^(3.5))/25920- (715.6423511*(1/\z)^(4.5))/1244160)*exp((-ln(1/\z)-1)*\z;},
    declare function={gammapdf(\x,\k,\theta) = 1/(\theta^\k)*1/(gamma(\k))*\x^(\k-1)*exp(-\x/\theta);}
]

\begin{axis}[
  no markers, domain=0:7.0, samples=100,
  axis lines=left, xlabel=$y_t^i$, ylabel=$f_y(.)$,
  every axis y label/.style={at=(current axis.above origin),anchor=east},
  every axis x label/.style={at=(current axis.right of origin),anchor=north},
  major x grid style={draw=cyan},
  height=6cm, width=11cm,
  %xtick={6.5}, 
  xtick={6.0,6.5}, 
  ytick=\empty, 
  %xticklabels={},
  xticklabels={$\bar y$, $\bar y'$},
  %xticklabels={$\bar n(\theta_t)$},
  %xticklabels={$\bar n$, $\bar n$},
  %xticklabels={$\bar n(\theta^2_t$), $\bar n(\theta^1_t)$},
  enlargelimits=false, clip=false, axis on top,
  xmax=10,
  ]

\addplot [very thick,red,domain=0:6.5] {gammapdf(x,9,0.5)};
\addplot [very thick,cyan,domain=0:6] {gammapdf(x+0.5,9,0.5)};
\draw[cyan] (axis cs:6.0,0) -- ++(rel axis cs:0,1);
\draw[red] (axis cs:6.5,0) -- ++(rel axis cs:0,1);
\censorpt[green,dashed]{5.5}
\end{axis}
\end{tikzpicture}
\end{document}

其中typeset ticklabels with strut被删除并且axis cs:作为坐标的前缀。

相关内容