这篇文章是根据找到的帖子构建的这里有一个优雅的解决方案跳转。
我想将红色标记附加到现有图中,以便图看起来像这样:
总之,我有两个数据集,它们目前是相同的值,因此出现上面的图。如何在 pgfplots 中获得相同的效果?谢谢。
以下是代码:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{filecontents}
\usepackage{graphicx}
\begin{filecontents*}{data.csv}
Iter y1 y2
1, -0.9317521, -0.9317521
2, 1.8946202, 1.8946202
3, 0, 0
4, 1.5797030, 1.5797030
5, -1.8814457, -1.8814457
6, 0, 0
7, 2.0373926, 2.0373926
8, 0, 0
9, 1.9972528, 1.9972528
10, 0, 0
\end{filecontents*}
\begin{document}
\begin{tikzpicture}
\begin{axis}[ybar,bar width=1pt,xlabel={$Number~of~Recursions$},ylabel={Absolute Parameter Error}]
\addplot [mark=*,blue, fill=blue,mark options={scale=.65}]table[x index=0,y index=1,col sep=comma] {data.csv};
%\addplot [mark=*,red, fill=blue,mark options={scale=.35}]table[x index=0,y index=1,col sep=comma] {data.csv};
\addplot[blue,line width=1pt,sharp plot, update limits=false] coordinates {(0,0) (11,0)};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
根据编辑的问题编辑答案
您声明不同的 y 值可以不同,但您为两个 y 列提供了相同的值。这就是为什么我y2
将的第一个值更改为-1.5
。
其余内容请查看代码中的注释。
\documentclass[border=2mm]{standalone}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
Iter, y1, y2
1, -0.9317521, -1.5
2, 1.8946202, 1.8946202
3, 0, 0
4, 1.5797030, 1.5797030
5, -1.8814457, -1.8814457
6, 0, 0
7, 2.0373926, 2.0373926
8, 0, 0
9, 1.9972528, 1.9972528
10, 0, 0
\end{filecontents*}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0,
xmax=11,
xlabel=Number~of~Recursions,
ylabel=Absolute Parameter Error,
]
\addplot [
mark=*,
only marks,
mark options={
%%% only draw the marker
% draw=color, fill=none
draw=red,
fill=red,
% adjust the line width of the marker
line width=1pt,
}
] table [x=Iter,y=y2,col sep=comma] {data.csv};
\addplot [
ycomb,
mark=*,
blue,
fill=blue,
line width=1pt,
% make marker smaller
mark options={
scale=.5,
}
] table [x=Iter,y=y1,col sep=comma] {data.csv};
\addplot [
blue,
sharp plot,
line width=1pt,
] coordinates {
(\pgfkeysvalueof{/pgfplots/xmin},0)
(\pgfkeysvalueof{/pgfplots/xmax},0)
};
\end{axis}
\end{tikzpicture}
\end{document}