Dois gráficos de barras próximos um do outro com larguras diferentes e a mesma altura

Dois gráficos de barras próximos um do outro com larguras diferentes e a mesma altura

Olá, estou tentando criar dois gráficos lado a lado em uma página. E eu gostaria que a largura do segundo gráfico fosse menor que a do primeiro, mas NÃO a altura. Quero que a largura seja menor devido ao menor número de marcações do eixo x no segundo gráfico.

Por alguma razão, o gráfico decide mover as barras totalmente para a esquerda e para a direita, em vez de espalhar as barras linearmente pelo gráfico, o que eu também gostaria de corrigir.

Aqui está meu main.texarquivo:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pdflscape}
\usepackage[table]{xcolor}
\usepackage[landscape, a4paper, bottom=0.0in, margin=0in]{geometry}
\usepackage{pgfplots}
\usepackage{xcolor}
\usepackage{array}
\usepackage{caption}
\usepackage{subcaption}


%Customization
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\pgfplotsset{compat=newest} % Allows to place the legend below plot
\usepgfplotslibrary{units} % Allows to enter the units nicely


\pagenumbering{gobble}
\definecolor{customblue}{RGB}{21,155,151}
\definecolor{custompink}{RGB}{230,55,148}


\title{test}
\author{sinasohi}
\date{January 2017}

\begin{document}
%\maketitle

\include{Page1}
\include{Page3}

\end{document}

Aqui está meu código para Page3.tex, que incluo em main.tex:

\pgfplotstableread[row sep=\\,col sep=&]{
    interval    & a     & b     \\
    K74         & 32.9  & 27.5  \\
    K76         & 23.5  & 22.5  \\
    K75         & 25.7  & 25.0  \\
    K77         & 22.3  & 30    \\
    K89-90      & 30.6  & 30    \\
    K92         & 19.3  & 15    \\
    }\mydata

\pgfplotstableread[row sep=\\,col sep=&]{
    interval        & a     & b     \\
    K78             & 18.8  & 20  \\
    K85, K86, K87   & 66.3  & 60  \\
    }\yourdata

\begin{figure}
\centering
\begin{minipage}{.4\textwidth}
\caption*{\textbf{Kardiovaskulære diagnoser}}
\begin{tikzpicture}
    \begin{axis}[
            legend style={at={(0.5,1)}, text width=6em, text height=1.5ex, anchor=north,legend columns=-1},
            ybar,
            bar width=.6cm,
            symbolic x coords={K74,K76,K75,K77,K89-90,K92},
            xtick=data,
            ymin=0, %ymax=40,
            width=1\textwidth,
            nodes near coords,
            every node near coord/.append style={color=black}
        ]

        \addplot[red!20!customblue,fill=customblue!80!white] table[x=interval,y=a]{\mydata};
        \addplot[red!20!custompink,fill=custompink!80!white] table[x=interval,y=b]{\mydata};
        \legend{Klinik 12345, Landsrapport}
    \end{axis}
\end{tikzpicture}
\end{minipage}
\begin{minipage}{.4\textwidth}
\caption*{\textbf{Yderligere diagnoser}}
\begin{tikzpicture}
    \begin{axis}[
            %legend style={legend columns=1,at={(1,1)},anchor=north west},
            legend style={at={(0.5,1)}, text width=6em, text height=1.5ex, anchor=north,legend columns=-1},
            ybar,
            bar width=.6cm,
            symbolic x coords={K78, {K85, K86, K87}},
            xtick=data,
            ymin=0, %ymax=40,
            width=1\textwidth,
            nodes near coords,
            every node near coord/.append style={color=black}
        ]

        \addplot[red!20!customblue,fill=customblue!80!white] table[x=interval,y=a]{\yourdata};
        \addplot[red!20!custompink,fill=custompink!80!white] table[x=interval,y=b]{\yourdata};
        \legend{Klinik 12345, Landsrapport}
    \end{axis}
\end{tikzpicture}
\end{minipage}
\end{figure}

Isto é o que parece:

insira a descrição da imagem aqui

Responder1

Você pode definir heightalém do width. Para o posicionamento das barras no segundo eixo, utilize algo como enlarge x limits=0.7. Não sei por que inicialmente faz um trabalho ruim.

Eu definiria isso usando um groupplot, removeria minipages e usaria o titleem axisvez de \caption*.

Além disso, tente evitar carregar pacotes mais de uma vez. Você tem xcolorduas vezes. Porém , ele também é carregado pgfplots, portanto, a menos que você esteja usando os colortblrecursos em algum outro ponto do documento, não custa nada removê-los \usepackage[table]{xcolor}também. Também mudei de compat=newestpara compat=1.14. Christian Feuersänger recomenda usar um valor explícito, para que seu valor não mude se você atualizar pgfplots.

insira a descrição da imagem aqui

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pdflscape}
\usepackage[table]{xcolor}
\usepackage[landscape, a4paper, bottom=0.0in, margin=0in]{geometry}
\usepackage{pgfplots}

\pgfplotsset{compat=1.14} % Allows to place the legend below plot
\usepgfplotslibrary{
  units, % Allows to enter the units nicely
  groupplots
}

\definecolor{customblue}{RGB}{21,155,151}
\definecolor{custompink}{RGB}{230,55,148}

\begin{document}
\pgfplotstableread[row sep=\\,col sep=&]{
    interval    & a     & b     \\
    K74         & 32.9  & 27.5  \\
    K76         & 23.5  & 22.5  \\
    K75         & 25.7  & 25.0  \\
    K77         & 22.3  & 30    \\
    K89-90      & 30.6  & 30    \\
    K92         & 19.3  & 15    \\
    }\mydata

\pgfplotstableread[row sep=\\,col sep=&]{
    interval        & a     & b     \\
    K78             & 18.8  & 20  \\
    K85, K86, K87   & 66.3  & 60  \\
    }\yourdata

\begin{figure}
\centering
\begin{tikzpicture}
    \begin{groupplot}[
            group style={group size=2 by 1},
            legend style={at={(0.5,1)}, text width=6em, text height=1.5ex, anchor=north,legend columns=-1},
            ybar,
            /tikz/bar width=.6cm,            
            xtick=data,
            ymin=0, %ymax=40,
            ,height=10cm,
            nodes near coords,
            every node near coord/.append style={color=black}            
        ]

\nextgroupplot[
   title=\textbf{Kardiovaskulære diagnoser},
   width=.55\textwidth,
   symbolic x coords={K74,K76,K75,K77,K89-90,K92}
]
        \addplot[red!20!customblue,fill=customblue!80!white] table[x=interval,y=a]{\mydata};
        \addplot[red!20!custompink,fill=custompink!80!white] table[x=interval,y=b]{\mydata};
        \legend{Klinik 12345, Landsrapport}

\nextgroupplot[
    symbolic x coords={K78, {K85, K86, K87}},
    width=.3\textwidth,
    enlarge x limits=0.7,
    title=\textbf{Yderligere diagnoser}
    ]

        \addplot[red!20!customblue,fill=customblue!80!white] table[x=interval,y=a]{\yourdata};
        \addplot[red!20!custompink,fill=custompink!80!white] table[x=interval,y=b]{\yourdata};
        \legend{Klinik 12345, Landsrapport}
\end{groupplot}
\end{tikzpicture}
\end{figure}
\end{document}

informação relacionada