This happens because PGFPlots only uses one "stack" per axis: You're stacking the second confidence interval on top of the first. The easiest way to fix this is probably to use the approach described in "Is there an easy way of using line thickness as error indicator in a plot?": After plotting the first confidence interval, stack the upper bound on top again, using stack dir=minus
. That way, the stack will be reset to zero, and you can draw the second confidence interval in the same fashion as the first:
\documentclass{standalone}
\usepackage{pgfplots, tikz}
\usepackage{pgfplotstable}
\pgfplotstableread{
temps y_h y_h__inf y_h__sup y_f y_f__inf y_f__sup
1 0.237340 0.135170 0.339511 0.237653 0.135482 0.339823
2 0.561320 0.422007 0.700633 0.165871 0.026558 0.305184
3 0.694760 0.534205 0.855314 0.074856 -0.085698 0.235411
4 0.728306 0.560179 0.896432 0.003361 -0.164765 0.171487
5 0.711710 0.544944 0.878477 -0.044582 -0.211349 0.122184
6 0.671241 0.511191 0.831291 -0.073347 -0.233397 0.086703
7 0.621177 0.471219 0.771135 -0.088418 -0.238376 0.061540
8 0.569354 0.431826 0.706882 -0.094382 -0.231910 0.043146
9 0.519973 0.396571 0.643376 -0.094619 -0.218022 0.028783
10 0.475121 0.366990 0.583251 -0.091467 -0.199598 0.016664
}{\table}
\begin{document}
\begin{tikzpicture}
\begin{axis}
% y_h confidence interval
\addplot [stack plots=y, fill=none, draw=none, forget plot] table [x=temps, y=y_h__inf] {\table} \closedcycle;
\addplot [stack plots=y, fill=gray!50, opacity=0.4, draw opacity=0, area legend] table [x=temps, y expr=\thisrow{y_h__sup}-\thisrow{y_h__inf}] {\table} \closedcycle;
% subtract the upper bound so our stack is back at zero
\addplot [stack plots=y, stack dir=minus, forget plot, draw=none] table [x=temps, y=y_h__sup] {\table};
% y_f confidence interval
\addplot [stack plots=y, fill=none, draw=none, forget plot] table [x=temps, y=y_f__inf] {\table} \closedcycle;
\addplot [stack plots=y, fill=gray!50, opacity=0.4, draw opacity=0, area legend] table [x=temps, y expr=\thisrow{y_f__sup}-\thisrow{y_f__inf}] {\table} \closedcycle;
% the line plots (y_h and y_f)
\addplot [stack plots=false, very thick,smooth,blue] table [x=temps, y=y_h] {\table};
\addplot [stack plots=false, very thick,smooth,blue] table [x=temps, y=y_f] {\table};
\end{axis}
\end{tikzpicture}
\end{document}
Firstly
x tick label style = {color=pie7,text width=2cm,align=center},
will specify a width for the labels and an alignment. Now the symbolic coords
are really just an internal label (and so could be shorter) but what is printed as the label can be specified as xticklabels
. Here you can use \slash
instead of /
allowing line breaks at these points.
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{color}
\usepackage{amsmath, amsfonts, amssymb}
\usepackage{mdframed}
\usepackage[left=2cm,right=2cm]{geometry}
\usepackage{color}
\usepackage{tikz,pgfplots}
\usetikzlibrary{shapes,arrows}
\pgfplotsset{compat=1.10}
\definecolor{pie1}{RGB}{32,173,222}
\definecolor{pie2}{RGB}{255,105,36}
\definecolor{pie3}{RGB}{0,167,90}
\definecolor{pie4}{RGB}{26,76,151}
\definecolor{pie5}{RGB}{252,209,67}
\definecolor{pie6}{RGB}{255,51,59}
\definecolor{pie7}{RGB}{52,51,51}
\definecolor{pie8}{RGB}{149,38,139}
\definecolor{pie9}{RGB}{5,58,83}
\definecolor{pie10}{RGB}{254,242,77}
\definecolor{pie11}{RGB}{210,247,84}
\definecolor{pie12}{RGB}{191,216,99}
\begin{document}
\begin{figure}[htbp]
\begin{mdframed}[backgroundcolor=pie5,linecolor=pie5]
\centering
\begin{tikzpicture}[font=\color{pie7}\footnotesize]
\begin{axis}[
x tick label style = {color=pie7,text width=2cm,align=center},
y tick label style = {color=pie8},
x axis line style = {color=gray},
major x tick style = transparent,
y tick style = transparent,
y axis line style = transparent,
ymajorgrids = true,
symbolic x coords = {Piso de mosaico/madera/otro, Techo
de losa/concreto/tabique/ladrillo, Pared de tabique/ladrillo/block/piedra/cemento, Agua entubada en la vivienda, Drenaje conectado a la red publica, Disponen de energia electrica},
xticklabels = {Piso de mosaico\slash madera\slash otro, Techo
de losa\slash concreto\slash tabique\slash ladrillo, Pared de tabique\slash ladrillo\slash block\slash piedra\slash cemento, Agua entubada en la vivienda, Drenaje conectado a la red publica, Disponen de energia electrica},
height = 6cm,
width = \columnwidth,
bar width = 6pt,
ymin = 0,
ymax = 100,
ylabel = \color{pie8}\normalsize Porcentaje,
every axis y label/.style={at={(ticklabel* cs:1.05)},anchor=south},
xtick = data,
nodes near coords,
point meta = y,
ybar,
legend style = {at={(0.5,-0.5)},anchor=north,legend columns=-1,draw=white,shape=rounded rectangle}
]
\addplot[color=pie1,fill=pie1] coordinates {
(Piso de mosaico/madera/otro, 75)
(Techo de losa/concreto/tabique/ladrillo, 80)
(Pared de tabique/ladrillo/block/piedra/cemento,71)
(Agua entubada en la vivienda, 67)
(Drenaje conectado a la red publica, 80)
(Disponen de energia electrica, 68)
};
\addplot[color=pie2,fill=pie2] coordinates {
(Piso de mosaico/madera/otro, 75)
(Techo de losa/concreto/tabique/ladrillo, 80)
(Pared de tabique/ladrillo/block/piedra/cemento,71)
(Agua entubada en la vivienda, 67)
(Drenaje conectado a la red publica, 80)
(Disponen de energia electrica, 68)
};
\addplot[color=pie3,fill=pie3] coordinates {
(Piso de mosaico/madera/otro, 75)
(Techo de losa/concreto/tabique/ladrillo, 80)
(Pared de tabique/ladrillo/block/piedra/cemento,71)
(Agua entubada en la vivienda, 67)
(Drenaje conectado a la red publica, 80)
(Disponen de energia electrica, 68)
};
\addplot[color=pie4,fill=pie4] coordinates {
(Piso de mosaico/madera/otro, 75)
(Techo de losa/concreto/tabique/ladrillo, 80)
(Pared de tabique/ladrillo/block/piedra/cemento,71)
(Agua entubada en la vivienda, 67)
(Drenaje conectado a la red publica, 80)
(Disponen de energia electrica, 68)
};
\addplot[color=pie6,fill=pie6] coordinates {
(Piso de mosaico/madera/otro, 75)
(Techo de losa/concreto/tabique/ladrillo, 80)
(Pared de tabique/ladrillo/block/piedra/cemento,71)
(Agua entubada en la vivienda, 67)
(Drenaje conectado a la red publica, 80)
(Disponen de energia electrica, 68)
};
\addplot[color=pie7,fill=pie7] coordinates {
(Piso de mosaico/madera/otro, 75)
(Techo de losa/concreto/tabique/ladrillo, 80)
(Pared de tabique/ladrillo/block/piedra/cemento,71)
(Agua entubada en la vivienda, 67)
(Drenaje conectado a la red publica, 80)
(Disponen de energia electrica, 68)
};
\addplot[color=pie8,fill=pie8] coordinates {
(Piso de mosaico/madera/otro, 75)
(Techo de losa/concreto/tabique/ladrillo, 80)
(Pared de tabique/ladrillo/block/piedra/cemento,71)
(Agua entubada en la vivienda, 67)
(Drenaje conectado a la red publica, 80)
(Disponen de energia electrica, 68)
};
\addplot[color=pie9,fill=pie9] coordinates {
(Piso de mosaico/madera/otro, 75)
(Techo de losa/concreto/tabique/ladrillo, 80)
(Pared de tabique/ladrillo/block/piedra/cemento,71)
(Agua entubada en la vivienda, 67)
(Drenaje conectado a la red publica, 80)
(Disponen de energia electrica, 68)
};
\legend{1990 Ctr, 2000 Ctr, 1990 Obpdo., 2000 Obpdo., 1990 Mitras, 2000 Mitras, 1990 Ind., 2000 Ind.}
\end{axis}
\end{tikzpicture}
\end{mdframed}
\caption{Tipo de Vivienda en Delegacion Centro entre los aƱos 1995 y 2000. \emph{Fuente: PDUM 2010-2020.}}
\label{fig:topologiaViviendaCentro}
\end{figure}
\end{document}
Best Answer
One way to do it is to specify all
yticks
except 1 and then use theextra y ticks
andextra y ticks style
to add the tick at y=1 and to change the grid style only for that tick.