pgfplot 条形图图例和 y 标签

pgfplot 条形图图例和 y 标签

我想问一下如何获取我的结果。

我的代码:

\begin{tikzpicture}
    \begin{axis}[ybar stacked,
legend style={cells={anchor=west},at={(1.75,0.89)}}, area legend,
    %legend style={at={(1,-1)}, anchor=north,legend columns=-1,legend cell align=left},
        x tick label style={ /pgf/number format/1000 sep=},
    ylabel=Revenue (\$\,billions),
    enlargelimits=0.05,width=10cm,height=12cm,
    bar width=12pt,
]
    \addplot coordinates
        {(2012,1388) (2013,1388) (2014,1388) (2015,1388) (2016,1388) (2017,1388) (2018,1500)};
        \addlegendentry{\textsc{InkJet Head}} 

    \addplot coordinates
        {(  2012    ,   2995    ) ( 2013    ,   3144.75 ) ( 2014    ,   3294.5  ) ( 2015    ,   2126.45 ) ( 2016    ,   3594    ) ( 2017    ,   3893.5  ) ( 2018    ,   4342.75 ) }; 
        \addlegendentry{\textsc{Pressure sensors}} 

    \addplot  coordinates
        {(  2012    ,   3594    ) ( 2013    ,   3923.45 ) ( 2014    ,   4193    ) ( 2015    ,   4432.6  ) ( 2016    ,   4792    ) ( 2017    ,   5091.5  ) ( 2018    ,   5450.9  ) };
        \addlegendentry{\textsc{Microphones}} 

    \addplot [color=yellow, fill=yellow] coordinates
        {(  2012    ,   5361.05 ) ( 2013    ,   5450.9  ) ( 2014    ,   5690.5  ) ( 2015    ,   5960.05 ) ( 2016    ,   6289.5  ) ( 2017    ,   6529.1  ) ( 2018    ,   6738.75 )};     
        \addlegendentry{\textsc{Accelerometers}} 

    \addplot [color=black, fill=white] coordinates
        {(  2012    ,   6648.9  ) ( 2013    ,   6888.5  )  (    2014    ,   7128.1  ) ( 2015    ,   7188    ) ( 2016    ,   7457.55 ) ( 2017    ,   7637.25 ) ( 2018    ,   7787    )};     
        \addlegendentry{\textsc{Gyroscopes}} 

    \addplot [color=violet, fill=violet] coordinates
        {(  2012    ,   6948.4  ) ( 2013    ,   7337.75 )  (    2014    ,   7547.4  ) ( 2015    ,   7727.1  ) ( 2016    ,   7787    )  (    2017    ,   8086.5  ) ( 2018    ,   8236.25 )};     
        \addlegendentry{\textsc{Digital compass}} 

    \addplot [color=gray, fill=gray] coordinates
        {(  2012    ,   7337.75 ) ( 2013    ,   7906.8  ) ( 2014    ,   8445.9  )  (    2015    ,   9164.7  ) ( 2016    ,   9584) ( 2017    ,   10033.25    ) ( 2018    ,   10482.5 ) };        
        \addlegendentry{\textsc{Inertial combos}} 

    \addplot [color=purple, fill=purple] coordinates
        {(2012,7487.5) (2013,8176.35) (2014,8835.25) (2015,9494.15) (2016,10033.25) (2017,10632.25) (2018,11021.6)};        
        \addlegendentry{\textsc{Microbolometers}} 


\addplot [color=pink, fill=pink] coordinates
        {(  2012    ,   7547.4  ) ( 2013    ,   8236.25 ) ( 2014    ,   8850.225    ) ( 2015    ,   9509.125    ) ( 2016    ,   10048.225   ) ( 2017    ,   10647.225   ) ( 2018    ,   11081.5 ) };
        \addlegendentry{\textsc{PIR \& thermopiles}} 


\addplot [color=olive, fill=olive] coordinates
        {(  2012    ,   7562.375    ) ( 2013    ,   8251.225    ) ( 2014    ,   8865.2  ) ( 2015    ,   9524.1  ) ( 2016    ,   10063.2 ) ( 2017    ,   10662.2 ) ( 2018    ,   11096.475   ) };
        \addlegendentry{\textsc{Micro displays}} 


\addplot [color=magenta, fill=magenta] coordinates
        {(  2012    ,   8386    ) ( 2013    ,   9134.75 ) ( 2014    ,   10033.25    ) ( 2015    ,   10886.825   ) ( 2016    ,   11740.4 ) ( 2017    ,   12608.95    ) ( 2018    ,   13477.5 ) };
        \addlegendentry{\textsc{Projection systems}}


\addplot [color=lime, fill=lime] coordinates
        {(  2012    ,   8685.5  ) ( 2013    ,   9434.25 ) ( 2014    ,   10332.75    )  (    2015    ,   11081.5 ) ( 2016    ,   12129.75    ) ( 2017    ,   12938.4 ) ( 2018    ,   13926.75    ) };
        \addlegendentry{\textsc{Other optical MEMS}}


\addplot [color=green, fill=green] coordinates
        {(  2012    ,   8985    ) ( 2013    ,   10003.3 ) ( 2014    ,   10931.75    ) ( 2015    ,   12219.6 ) ( 2016    ,   13417.6 ) ( 2017    ,   14825.25    ) ( 2018    ,   16472.5 ) };
    \addlegendentry{\textsc{Microfluidics for research}} 


\addplot [color=cyan, fill=cyan] coordinates
        {(  2012    ,   9823.6  ) ( 2013    ,   10931.75    ) ( 2014    ,   12129.75    ) ( 2015    ,   13537.4 ) ( 2016    ,   15124.75    ) ( 2017    ,   16831.9 ) ( 2018    ,   19018.25    ) };
        \addlegendentry{\textsc{Microfluidics for IVD}}


\addplot [color=brown, fill=brown] coordinates
        {(  2012    ,   10123.1 ) ( 2013    ,   11231.25    ) ( 2014    ,   12579   ) ( 2015    ,   14076.5 ) ( 2016    ,   15723.75    )  (    2017    ,   17520.75    ) ( 2018    ,   18419.25    ) };
        \addlegendentry{\textsc{Microdispensers}}


\addplot [color=red, fill=red] coordinates
        {(  2012    ,   10482.5 ) ( 2013    ,   11830.25    ) ( 2014    ,   13327.75    ) ( 2015    ,   14825.25    ) ( 2016    ,   16622.25    ) ( 2017    ,   18628.9 ) ( 2018    ,   21114.75    ) };
        \addlegendentry{\textsc{RF MEMS}}


\addplot [color=orange, fill=orange] coordinates
        {(  2012    ,   10542.4 ) ( 2013    ,   11860.2 ) ( 2014    ,   13447.55    ) ( 2015    ,   14975   ) ( 2016    ,   16921.75    ) ( 2017    ,   19018.25    ) ( 2018    ,   21564   ) };
        \addlegendentry{\textsc{Oscillators}}   


\addplot [color=black, fill=black] coordinates
        {(  2012    ,   10871.85    )  (    2013    ,   12279.5 ) ( 2014    ,   13777   ) ( 2015    ,   17071.5 ) ( 2016    ,   17371   ) ( 2017    ,   19617.25    ) ( 2018    ,   22312.75    ) };
        \addlegendentry{\textsc{Others}}

%\legend{InkJet Head, Pressure sensors, Microphones,  Accelerometers, Gyroscopes, Digital compass, Inertial combos, Microbolometers, PIR \& thermopiles, Micro displays, Projection systems, Other optical MEMS, Microfluidics for research, Microfluidics for IVD, Microdispensers, RF MEMS, Oscillators, Others}
    \end{axis}

我有这个: 在此处输入图片描述

我要这个: 在此处输入图片描述

我在一行中的图例中有一个描述,但我希望图表下的图例在一行中有多条描述。

先感谢您。

答案1

我知道这不是你想要的,但在我看来,这更清楚,所以我建议你考虑一下。如果你坚持使用不规则的变体,也许其他人可以提供帮助,我不确定这是否可行。我认为你必须停止使用 pgfplots\legend并定义你的新环境。

编辑:您可以通过将此代码包含在轴选项中(未包含在最终源代码中),将 ytick 标签设置为显示 220000 而不是 2.2*10^5。

y tick label style={/pgf/number format/.cd,%
        scaled y ticks = false,
        set thousands separator={\,},
        fixed},

在默认配置中,y 标签将与这些数字重叠。然而,在较新版本的 pgfplots 中已解决此问题。因此,请包含例如

\pgfplotsset{compat=1.13}

在你的序言中。

最终代码:

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}

\begin{document}
    \begin{tikzpicture}

    \begin{axis}[ybar stacked,
    legend style={                    % this is modified
        legend cell align=left,       %
        legend columns=2,             %
        at={(xticklabel cs:0.5)},     %
        anchor=north                  % up to here
    }, area legend,
    x tick label style={ /pgf/number format/1000 sep=},
    ylabel=Revenue (\$\,billions),
    enlargelimits=0.05,width=10cm,height=12cm,
    bar width=12pt,
    ]
    \addplot coordinates
    {(2012,1388) (2013,1388) (2014,1388) (2015,1388) (2016,1388) (2017,1388) (2018,1500)};
    \addlegendentry{\textsc{InkJet Head}} 

    \addplot coordinates
    {(  2012    ,   2995    ) ( 2013    ,   3144.75 ) ( 2014    ,   3294.5  ) ( 2015    ,   2126.45 ) ( 2016    ,   3594    ) ( 2017    ,   3893.5  ) ( 2018    ,   4342.75 ) }; 
    \addlegendentry{\textsc{Pressure sensors}} 

    \addplot  coordinates
    {(  2012    ,   3594    ) ( 2013    ,   3923.45 ) ( 2014    ,   4193    ) ( 2015    ,   4432.6  ) ( 2016    ,   4792    ) ( 2017    ,   5091.5  ) ( 2018    ,   5450.9  ) };
    \addlegendentry{\textsc{Microphones}} 

    \addplot [color=yellow, fill=yellow] coordinates
    {(  2012    ,   5361.05 ) ( 2013    ,   5450.9  ) ( 2014    ,   5690.5  ) ( 2015    ,   5960.05 ) ( 2016    ,   6289.5  ) ( 2017    ,   6529.1  ) ( 2018    ,   6738.75 )};     
    \addlegendentry{\textsc{Accelerometers}} 

    \addplot [color=black, fill=white] coordinates
    {(  2012    ,   6648.9  ) ( 2013    ,   6888.5  )  (    2014    ,   7128.1  ) ( 2015    ,   7188    ) ( 2016    ,   7457.55 ) ( 2017    ,   7637.25 ) ( 2018    ,   7787    )};     
    \addlegendentry{\textsc{Gyroscopes}} 

    \addplot [color=violet, fill=violet] coordinates
    {(  2012    ,   6948.4  ) ( 2013    ,   7337.75 )  (    2014    ,   7547.4  ) ( 2015    ,   7727.1  ) ( 2016    ,   7787    )  (    2017    ,   8086.5  ) ( 2018    ,   8236.25 )};     
    \addlegendentry{\textsc{Digital compass}} 

    \addplot [color=gray, fill=gray] coordinates
    {(  2012    ,   7337.75 ) ( 2013    ,   7906.8  ) ( 2014    ,   8445.9  )  (    2015    ,   9164.7  ) ( 2016    ,   9584) ( 2017    ,   10033.25    ) ( 2018    ,   10482.5 ) };        
    \addlegendentry{\textsc{Inertial combos}} 

    \addplot [color=purple, fill=purple] coordinates
    {(2012,7487.5) (2013,8176.35) (2014,8835.25) (2015,9494.15) (2016,10033.25) (2017,10632.25) (2018,11021.6)};        
    \addlegendentry{\textsc{Microbolometers}} 


    \addplot [color=pink, fill=pink] coordinates
    {(  2012    ,   7547.4  ) ( 2013    ,   8236.25 ) ( 2014    ,   8850.225    ) ( 2015    ,   9509.125    ) ( 2016    ,   10048.225   ) ( 2017    ,   10647.225   ) ( 2018    ,   11081.5 ) };
    \addlegendentry{\textsc{PIR \& thermopiles}} 


    \addplot [color=olive, fill=olive] coordinates
    {(  2012    ,   7562.375    ) ( 2013    ,   8251.225    ) ( 2014    ,   8865.2  ) ( 2015    ,   9524.1  ) ( 2016    ,   10063.2 ) ( 2017    ,   10662.2 ) ( 2018    ,   11096.475   ) };
    \addlegendentry{\textsc{Micro displays}} 


    \addplot [color=magenta, fill=magenta] coordinates
    {(  2012    ,   8386    ) ( 2013    ,   9134.75 ) ( 2014    ,   10033.25    ) ( 2015    ,   10886.825   ) ( 2016    ,   11740.4 ) ( 2017    ,   12608.95    ) ( 2018    ,   13477.5 ) };
    \addlegendentry{\textsc{Projection systems}}


    \addplot [color=lime, fill=lime] coordinates
    {(  2012    ,   8685.5  ) ( 2013    ,   9434.25 ) ( 2014    ,   10332.75    )  (    2015    ,   11081.5 ) ( 2016    ,   12129.75    ) ( 2017    ,   12938.4 ) ( 2018    ,   13926.75    ) };
    \addlegendentry{\textsc{Other optical MEMS}}


    \addplot [color=green, fill=green] coordinates
    {(  2012    ,   8985    ) ( 2013    ,   10003.3 ) ( 2014    ,   10931.75    ) ( 2015    ,   12219.6 ) ( 2016    ,   13417.6 ) ( 2017    ,   14825.25    ) ( 2018    ,   16472.5 ) };
    \addlegendentry{\textsc{Microfluidics for research}} 


    \addplot [color=cyan, fill=cyan] coordinates
    {(  2012    ,   9823.6  ) ( 2013    ,   10931.75    ) ( 2014    ,   12129.75    ) ( 2015    ,   13537.4 ) ( 2016    ,   15124.75    ) ( 2017    ,   16831.9 ) ( 2018    ,   19018.25    ) };
    \addlegendentry{\textsc{Microfluidics for IVD}}


    \addplot [color=brown, fill=brown] coordinates
    {(  2012    ,   10123.1 ) ( 2013    ,   11231.25    ) ( 2014    ,   12579   ) ( 2015    ,   14076.5 ) ( 2016    ,   15723.75    )  (    2017    ,   17520.75    ) ( 2018    ,   18419.25    ) };
    \addlegendentry{\textsc{Microdispensers}}


    \addplot [color=red, fill=red] coordinates
    {(  2012    ,   10482.5 ) ( 2013    ,   11830.25    ) ( 2014    ,   13327.75    ) ( 2015    ,   14825.25    ) ( 2016    ,   16622.25    ) ( 2017    ,   18628.9 ) ( 2018    ,   21114.75    ) };
    \addlegendentry{\textsc{RF MEMS}}


    \addplot [color=orange, fill=orange] coordinates
    {(  2012    ,   10542.4 ) ( 2013    ,   11860.2 ) ( 2014    ,   13447.55    ) ( 2015    ,   14975   ) ( 2016    ,   16921.75    ) ( 2017    ,   19018.25    ) ( 2018    ,   21564   ) };
    \addlegendentry{\textsc{Oscillators}}   


    \addplot [color=black, fill=black] coordinates
    {(  2012    ,   10871.85    )  (    2013    ,   12279.5 ) ( 2014    ,   13777   ) ( 2015    ,   17071.5 ) ( 2016    ,   17371   ) ( 2017    ,   19617.25    ) ( 2018    ,   22312.75    ) };
    \addlegendentry{\textsc{Others}}

    %\legend{InkJet Head, Pressure sensors, Microphones,  Accelerometers, Gyroscopes, Digital compass, Inertial combos, Microbolometers, PIR \& thermopiles, Micro displays, Projection systems, Other optical MEMS, Microfluidics for research, Microfluidics for IVD, Microdispensers, RF MEMS, Oscillators, Others}
    \end{axis}

    \end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

您可以稍微调整一下图例的定位,并指定图例中所需的列数;例如:

\begin{tikzpicture}
%\*
\begin{axis}[
%
    ybar stacked,
    legend style={legend cell align=left,anchor=north west,,at={(0.0,-0.1)},legend columns=2}, area legend,
        x tick label style={ /pgf/number format/1000 sep=},
    ylabel=Revenue %(\$\,billions),
    enlargelimits=0.05,width=10cm,height=12cm,
    bar width=12pt,
]
    \addplot coordinates
        {(2012,1388) (2013,1388) (2014,1388) (2015,1388) (2016,1388) (2017,1388) (2018,1500)};
        \addlegendentry{\textsc{InkJet Head}} 

    \addplot coordinates
        {(  2012    ,   2995    ) ( 2013    ,   3144.75 ) ( 2014    ,   3294.5  ) ( 2015    ,   2126.45 ) ( 2016    ,   3594    ) ( 2017    ,   3893.5  ) ( 2018    ,   4342.75 ) }; 
        \addlegendentry{\textsc{Pressure sensors}} 

    \addplot  coordinates
        {(  2012    ,   3594    ) ( 2013    ,   3923.45 ) ( 2014    ,   4193    ) ( 2015    ,   4432.6  ) ( 2016    ,   4792    ) ( 2017    ,   5091.5  ) ( 2018    ,   5450.9  ) };
        \addlegendentry{\textsc{Microphones}} 

    \addplot [color=yellow, fill=yellow] coordinates
        {(  2012    ,   5361.05 ) ( 2013    ,   5450.9  ) ( 2014    ,   5690.5  ) ( 2015    ,   5960.05 ) ( 2016    ,   6289.5  ) ( 2017    ,   6529.1  ) ( 2018    ,   6738.75 )};     
        \addlegendentry{\textsc{Accelerometers}} 

    \addplot [color=black, fill=white] coordinates
        {(  2012    ,   6648.9  ) ( 2013    ,   6888.5  )  (    2014    ,   7128.1  ) ( 2015    ,   7188    ) ( 2016    ,   7457.55 ) ( 2017    ,   7637.25 ) ( 2018    ,   7787    )};     
        \addlegendentry{\textsc{Gyroscopes}} 

    \addplot [color=violet, fill=violet] coordinates
        {(  2012    ,   6948.4  ) ( 2013    ,   7337.75 )  (    2014    ,   7547.4  ) ( 2015    ,   7727.1  ) ( 2016    ,   7787    )  (    2017    ,   8086.5  ) ( 2018    ,   8236.25 )};     
        \addlegendentry{\textsc{Digital compass}} 

    \addplot [color=gray, fill=gray] coordinates
        {(  2012    ,   7337.75 ) ( 2013    ,   7906.8  ) ( 2014    ,   8445.9  )  (    2015    ,   9164.7  ) ( 2016    ,   9584) ( 2017    ,   10033.25    ) ( 2018    ,   10482.5 ) };        
        \addlegendentry{\textsc{Inertial combos}} 

    \addplot [color=purple, fill=purple] coordinates
        {(2012,7487.5) (2013,8176.35) (2014,8835.25) (2015,9494.15) (2016,10033.25) (2017,10632.25) (2018,11021.6)};        
        \addlegendentry{\textsc{Microbolometers}} 

    \addplot [color=pink, fill=pink] coordinates
        {(  2012    ,   7547.4  ) ( 2013    ,   8236.25 ) ( 2014    ,   8850.225    ) ( 2015    ,   9509.125    ) ( 2016    ,   10048.225   ) ( 2017    ,   10647.225   ) ( 2018    ,   11081.5 ) };
        \addlegendentry{\textsc{PIR \& thermopiles}} 

    \addplot [color=olive, fill=olive] coordinates
        {(  2012    ,   7562.375    ) ( 2013    ,   8251.225    ) ( 2014    ,   8865.2  ) ( 2015    ,   9524.1  ) ( 2016    ,   10063.2 ) ( 2017    ,   10662.2 ) ( 2018    ,   11096.475   ) };
        \addlegendentry{\textsc{Micro displays}} 

    \addplot [color=magenta, fill=magenta] coordinates
        {(  2012    ,   8386    ) ( 2013    ,   9134.75 ) ( 2014    ,   10033.25    ) ( 2015    ,   10886.825   ) ( 2016    ,   11740.4 ) ( 2017    ,   12608.95    ) ( 2018    ,   13477.5 ) };
        \addlegendentry{\textsc{Projection systems}}

    \addplot [color=lime, fill=lime] coordinates
        {(  2012    ,   8685.5  ) ( 2013    ,   9434.25 ) ( 2014    ,   10332.75    )  (    2015    ,   11081.5 ) ( 2016    ,   12129.75    ) ( 2017    ,   12938.4 ) ( 2018    ,   13926.75    ) };
        \addlegendentry{\textsc{Other optical MEMS}}

    \addplot [color=green, fill=green] coordinates
        {(  2012    ,   8985    ) ( 2013    ,   10003.3 ) ( 2014    ,   10931.75    ) ( 2015    ,   12219.6 ) ( 2016    ,   13417.6 ) ( 2017    ,   14825.25    ) ( 2018    ,   16472.5 ) };
        \addlegendentry{\textsc{Microfluidics for research}} 

    \addplot [color=cyan, fill=cyan] coordinates
        {(  2012    ,   9823.6  ) ( 2013    ,   10931.75    ) ( 2014    ,   12129.75    ) ( 2015    ,   13537.4 ) ( 2016    ,   15124.75    ) ( 2017    ,   16831.9 ) ( 2018    ,   19018.25    ) };
        \addlegendentry{\textsc{Microfluidics for IVD}}

    \addplot [color=brown, fill=brown] coordinates
        {(  2012    ,   10123.1 ) ( 2013    ,   11231.25    ) ( 2014    ,   12579   ) ( 2015    ,   14076.5 ) ( 2016    ,   15723.75    )  (    2017    ,   17520.75    ) ( 2018    ,   18419.25    ) };
        \addlegendentry{\textsc{Microdispensers}}

    \addplot [color=red, fill=red] coordinates
        {(  2012    ,   10482.5 ) ( 2013    ,   11830.25    ) ( 2014    ,   13327.75    ) ( 2015    ,   14825.25    ) ( 2016    ,   16622.25    ) ( 2017    ,   18628.9 ) ( 2018    ,   21114.75    ) };
        \addlegendentry{\textsc{RF MEMS}}

    \addplot [color=orange, fill=orange] coordinates
        {(  2012    ,   10542.4 ) ( 2013    ,   11860.2 ) ( 2014    ,   13447.55    ) ( 2015    ,   14975   ) ( 2016    ,   16921.75    ) ( 2017    ,   19018.25    ) ( 2018    ,   21564   ) };
        \addlegendentry{\textsc{Oscillators}}   

    \addplot [color=black, fill=black] coordinates
        {(  2012    ,   10871.85    )  (    2013    ,   12279.5 ) ( 2014    ,   13777   ) ( 2015    ,   17071.5 ) ( 2016    ,   17371   ) ( 2017    ,   19617.25    ) ( 2018    ,   22312.75    ) };
        \addlegendentry{\textsc{Others}}

%\legend{InkJet Head, Pressure sensors, Microphones,  Accelerometers, Gyroscopes, Digital compass, Inertial combos, Microbolometers, PIR \& thermopiles, Micro displays, Projection systems, Other optical MEMS, Microfluidics for research, Microfluidics for IVD, Microdispensers, RF MEMS, Oscillators, Others}
    \end{axis}
%*/
\end{tikzpicture}

但是,这并不完全符合您的要求,因为每行的条目数是固定的......

相关内容