I would like a plot like the one here shown (wanted)
As using ybar
, the origin is fixed at 0, I'm getting a plot with the bars starting from zero instead of -120.
[Tex/LaTex] pgfplots – bar chart with bars starting at -120 instead of 0
pgfplots
Related Solutions
By default, all the markers are drawn in one layer on top of the plots. This is done so clipping for them can be switched on or off independently from the normal clipping. You can tell PGFPlots to use an individual layer for each set of markers, instead of putting them all on the same topmost layer, by setting clip mode=individual
. This means that later plots will be drawn on top of the preceding markers, which is what you want in this case:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.6}
\begin{filecontents}{TableForErrorBarQuestion.txt}
xValue1 yValue1 Deltay1 xValue2 yValue2 Deltay2
1 1.918332609 1.048808848 1 1.818332609 0.524404424
2 1.886796226 1.048808848 2 1.386796226 0.524404424
3 1.954482029 1.048808848 3 1.854482029 0.524404424
4 1.939071943 1.048808848 4 1.839071943 0.524404424
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
clip mode=individual,
xmin=0,xmax=5,ymin=0,ymax=4,
enlargelimits=false,
axis on top=true,
xlabel=$x$, ylabel=$y$
]
\addplot[
color=blue,
thick,
only marks,
mark=*,
/pgfplots/error bars/.cd,
x dir=none,
y dir=both,
y explicit
] table [
x=xValue1,
y=yValue1,
y error=Deltay1
] {TableForErrorBarQuestion.txt};
\addplot [
color=red,
thick,
only marks,
mark=*,
/pgfplots/error bars/.cd,
x dir=none,
y dir=both,
y explicit
] table [
x=xValue2,
y=yValue2,
y error=Deltay2
] {TableForErrorBarQuestion.txt};
\end{axis}
\end{tikzpicture}
\end{document}
I would really not recommend this plot because basically it's not readable and all data is dominated by Step 3 and predicted ones. First the question,
The plot goes up because you enlarge both limits, you need
enlarge x limits=0.15,
I didn't get that error with your code.
You can do that via both declaring a width and a height dimension.
I cleaned up a bit, the code and the result is
\documentclass[tikz,border=5pt]{standalone}
\usepackage[oldstylenums]{kpfonts}
\usepackage{pgfplots,filecontents}
\pgfplotsset{compat=1.10}
\pgfplotsset{major grid style={gray!50}}
\definecolor{step1Col}{HTML}{CC0000}
\definecolor{step2Col}{HTML}{CCCC99}
\definecolor{step3Col}{HTML}{003366}
\definecolor{step4Col}{HTML}{996600}
\definecolor{step5_6Col}{HTML}{669966}
\definecolor{step7Col}{HTML}{666699}
\definecolor{step8Col}{HTML}{FFCC00}
\usetikzlibrary{shadows,shadows.blur}
\begin{filecontents*}{plot1.csv}
Number Step1 Step2 Step3 Step4 Step5_6 Step7 Step8 Predicted
0 50 138 2025137 1400 15859 1358 50 11788769
1 50 894 2088724 1898 14662 2035 50 7564508
2 50 1610 3482495 1405 11490 1302 50 5970268
3 50 871 2089859 898 5021 569 50 7864363
4 50 138 3470704 1405 15888 1302 50 11788769
5 50 871 3481357 1909 11110 1324 50 7560008
6 50 871 2089855 2476 16015 885 50 7878218
7 50 1375 4875299 1903 17401 1258 50 11791029
8 50 877 2786201 1405 10704 1358 50 7871713
9 50 894 2733003 898 5027 569 50 7864363
10 50 138 3481371 1400 15882 1302 50 11788769
11 50 894 2088720 1405 18347 1302 50 7566933
\end{filecontents*}
\begin{document}
\begin{tikzpicture}[]
\begin{axis}[myplot/.style={ybar,draw=none,area legend},
width=10cm,height=5cm,
bar width=10pt,
enlarge x limits=0.15,
ylabel={clock cycles},
xlabel={tile mapping(VLD, IQ/IDCT, CC)},
ymajorgrids,
y tick label style={font=\tiny,major tick length=0pt},
x tick label style={font=\tiny,major tick length=0pt},
xticklabels ={2-1-2, 2-1-3, 2-2-3, 2-2-2, 2-3-2, 2-3-3, 3-3-3, 2-3-3, 2-2-3, 2-2-2, 2-1-2, 2-3-2},
xtick=data,
xmin=1,xmax=10,
ymin=1,ymax=1.5e7,
axis line style={draw=none},
legend style={legend cell align=left,at={(1.20,1.00)},anchor=north,
append after command={\pgfextra{\draw[draw=none,blur shadow]
(\tikzlastnode.south west)rectangle(\tikzlastnode.north east);
}
}
},
legend image post style={draw opacity=0},
legend entries={Step 1,Step 2,Step 3,Step 4,Step 5+6,Step 7,Step 8,Predicted}
]
\addplot[myplot,fill=step1Col ] table[x=Number,y=Step1] {plot1.csv};
\addplot[myplot,fill=step2Col ] table[x=Number,y=Step2] {plot1.csv};
\addplot[myplot,fill=step3Col ] table[x=Number,y=Step3] {plot1.csv};
\addplot[myplot,fill=step4Col ] table[x=Number,y=Step4] {plot1.csv};
\addplot[myplot,fill=step5_6Col] table[x=Number,y=Step5_6] {plot1.csv};
\addplot[myplot,fill=step7Col ] table[x=Number,y=Step7] {plot1.csv};
\addplot[myplot,fill=step8Col ] table[x=Number,y=Step8] {plot1.csv};
\addplot[only marks,mark=square*,red] table[x=Number,y=Predicted] {plot1.csv};
\end{axis}
\end{tikzpicture}
\end{document}
As you can see, most of your data vanished and you have strange entries in your legend because those datasets are invisible.
Instead I can think of two options,
clean up the legend and mention only step3, step 5+6, and predicted columns with a disclaimer that the remaining step contribution is negligible and comparable
Combine your negligible entries into a sum and plot that but I can't judge whether it would be a good idea here for your application.
Best Answer
You can shift the labels with an offset