4

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?

  • 1
    What do you mean by skipping lines? – percusse Aug 29 '14 at 17:44
  • @percusse By skipping lines I mean distributing the symbolic coords text between multiple lines instead of letting it in only one line. Since my english is not that good, I believe that the correct term may be "line breaking" or "line feed"... – jrojasqu Aug 29 '14 at 22:26
5

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}
  • it is exactly what I was looking for! Very instructive, thanks! – jrojasqu Aug 30 '14 at 16:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.