对从文件绘制的多条形图使用不同的颜色

对从文件绘制的多条形图使用不同的颜色

根据我最初的问题:使用 tikz 包制作的断条图

我正在尝试为同一组中的每一位成员涂上不同的颜色。我在序言中定义了我想要使用的颜色:

\definecolor{blue}{RGB}{0,150,214}
\definecolor{greenaccent}{RGB}{0,139,43}
\definecolor{purpleaccent}{RGB}{130,41,128}
\definecolor{orangeaccent}{RGB}{240,83,50}

pgfplots在之后立即加载xcolor。目前我的代码如下所示:

\begin{figure}
\centering
    \begin{tikzpicture}
      \begin{axis}[
        width=\linewidth,
        ybar,
        bar width=7.5pt,
        ymin=0,
        enlarge x limits={abs=25pt},
        legend style={draw=none,at={(0.5,-0.15)},
        anchor=north,legend columns=-1},
        xlabel={Jahre},
        ylabel={Fotos pro Tag (in Millionen)},
        symbolic x coords={2008,2009,2010,2011,2012,2013,2014},
        xtick=data,
      ]
        \pgfplotsinvokeforeach{Facebook,Instagram,Snapchat,WhatsApp}{
        \addplot[
            draw opacity=0,
            fill=blue
        ] table[col sep=semicolon,x=Jahr,y=#1]{./Bilder/AnzahlSocialNetwork.csv};
        \addlegendentry{#1}
        }
    \end{axis}
    \end{tikzpicture}
    \caption{Anzahl der täglich hochgeladenen Fotos (in Millionen)}
    \label{fig:AnzahlTäglichFotosSocialNetwork}
\end{figure}

但里面的填充选项将\addplot所有颜色都涂成了蓝色(显然)。我需要的是可以按照定义的颜色将第一个 y 图定义为蓝色、第二个 y 图为绿色、第三个 y 图为紫色、最后一个 y 图为橙色。手册中写道可以使用条形循环列表,但我找不到可以使用此处定义的 RGB 值的选项(而不是颜色的百分比)。

答案1

您可以将其传递给一个cycle list键,但是您需要在命令+后面放置一个符号\addplot以使其理解,而/.append style不是覆盖/.style以使用该cycle list参数。您可以使用 关闭绘图draw=none

并且请不要为了自己的利益而覆盖现有的颜色名称:)

\documentclass{standalone}
\usepackage{pgfplotstable}
\pgfplotstableread[col sep=comma]{
Year, Facebook, Instagram, Snapchat, WhatsApp
2008, 17, 0,0,0
2009,69,0,0,0
2010,197,0,0,0
2011,249,9,0,0
2012,300,9,51,0
2013,343,51,394,394
2014,351,60,703,703
}\mytable

\definecolor{blueaccent}{RGB}{0,150,214}
\definecolor{greenaccent}{RGB}{0,139,43}
\definecolor{purpleaccent}{RGB}{130,41,128}
\definecolor{orangeaccent}{RGB}{240,83,50}

\begin{tikzpicture}
  \begin{axis}[
    width=\linewidth,
    ybar,
    bar width=7.5pt,
    ymin=0,
    enlarge x limits={abs=25pt},
    legend style={draw=none,at={(0.5,-0.15)},
    anchor=north,legend columns=-1},
    xlabel={Jahre},
    ylabel={Fotos pro Tag (in Millionen)},
    symbolic x coords={2008,2009,2010,2011,2012,2013,2014},
    xtick=data,
    cycle list={blueaccent,greenaccent,purpleaccent,orangeaccent}
  ]
    \pgfplotsinvokeforeach{Facebook,Instagram,Snapchat,WhatsApp}{
      \addplot+[draw=none,fill,] table[x=Year,y=#1]{\mytable};
      \addlegendentry{#1}
    }
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容