[Tex/LaTex] pgfplots: symbolic coordinates with line skipping

bar chartline-breakingpgfplotsplot

I am trying to skip lines inside the symbolic X coordinates of the following pgfplots Bar Chart :

\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},
            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},
              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.2)},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}

The main reason is because these symbolic coordinates do not fit in the space below the bars, so they infringe on the next coordinate. One solution would be to rotate them adding the following line to the \axis options :

x tick label style  = {rotate=25, anchor=east, color=pie7}

but this does not meet the requirements since rotated text is forbidden.

Does anyone know how to create a column below the bars where lines are skip automatically? Or how to simply skip lines when defining the symbolic coords?

Best Answer

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.

Sample output

\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}
Related Question