Cor da hierarquia da pirâmide TikZ

Cor da hierarquia da pirâmide TikZ

Eu tenho um TikHierarquia da pirâmide Z, no entanto, eu queria saber se havia uma maneira de preencher as diferentes camadas com cores. Meu código atual é:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}

\begin{tikzpicture}
\coordinate (A) at (-5,0) {};
\coordinate (B) at ( 5,0) {};
\coordinate (C) at (0,7) {};
\draw[name path=AC] (A) -- (C);
\draw[name path=BC] (B) -- (C);
\foreach \y/\A in {0/Non-League, 1.5/League Two,2.5/ League One,3.5/Championship,4.5/Premier League} {
    \path[name path=horiz] (A|-0,\y) -- (B|-0,\y);
    \draw[name intersections={of=AC and horiz,by=P},
          name intersections={of=BC and horiz,by=Q}] (P) -- (Q)
        node[midway,above] {\A};
}
\end{tikzpicture}
\end{document}

Responder1

Você tem duas maneiras de preencher, mas na verdade existe uma maneira muito mais simples de desenhar sua pirâmide. Basicamente definimos um triângulo que recorta todos os retângulos preenchidos que posicionamos. Além de um preenchimento extra para o último elemento do seu foreach.

A primeira forma inclui uma lista de cores em um array. Adicionamos um countao seu foreach e o usamos para selecionar as cores. Como o array possui um índice numérico automático 0,1,2,3,..., utilizamos a contagem para isso.

A segunda forma utiliza a contagem para desenhar uma gradação, graças à evaluateopção de multiplicar a contagem por um determinado número. Agora, se você tiver 10 retângulos, é melhor fazer count*10com que cada retângulo seja

color1!0!color2
color1!10!color2
color1!20!color2
color1!30!color2

E assim por diante. Mas você pode selecionar qualquer número, desde que esteja satisfeito com o resultado. Para esta última solução você também pode usar uma única cor, claro, color!##que é a abreviação de color!##!whiteque quanto maior o número, mais se mistura com o branco.

Saída

insira a descrição da imagem aqui

Código

\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{intersections,backgrounds}
\begin{document}

% List of colors
\begin{tikzpicture}
\def\colorlist{{"cyan", "red", "orange", "yellow", "green", "gray", "blue", "violet"}}

\foreach \y/\A [count=\xi starting from 0, evaluate=\y as \nexty using (\y+1.5, evaluate=\xi as \grad using int(\xi*15)] in {0/Non-League, 1.5/League Two,2.5/ League One,3.5/Championship,4.5/Premier League} {%
    \pgfmathsetmacro\myfill{\colorlist[\xi]}
    \begin{scope}[on background layer]
    \clip[preaction={draw}] (-5,0) -- (5,0) -- (0,7) -- cycle;
    \fill[\myfill] (-5,\y) rectangle (5,\nexty);
    \fill[\myfill] (-5,4.5) rectangle (5,7);
    \end{scope}
    \node at (0,\y+.3) {\A};
}
\end{tikzpicture}

% Gradations
\begin{tikzpicture}[xshift=5cm]
\foreach \y/\A [count=\xi starting from 0, evaluate=\y as \nexty using (\y+1.5, evaluate=\xi as \grad using int(\xi*15)] in {0/Non-League, 1.5/League Two,2.5/ League One,3.5/Championship,4.5/Premier League} {%
    \begin{scope}[on background layer]
    \clip[preaction={draw}] (-5,0) -- (5,0) -- (0,7) -- cycle;
    \fill[red!\grad!yellow] (-5,\y) rectangle (5,\nexty);
    \fill[red!\grad!yellow] (-5,4.5) rectangle (5,7);
    \end{scope}
    \node at (0,\y+.3) {\A};
}
\end{tikzpicture}
\end{document}

Responder2

Utilizando caminhos triangulares simples, podemos preencher os caminhos com cores pré-determinadas ou com gradientes em função do contador \ido loop abaixo. xe ypode ser alterado para melhor aparência.

\documentclass{article}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}[x=2.5cm,y=2cm]
\coordinate (A) at (-3,-1) {};
\coordinate (B) at (3,-1) {};
\coordinate (C) at (0,5) {};
\foreach \A/\col [count=\i] in {Non-League/green, League Two/cyan,League One/yellow,Championship/blue,Premier\\League/orange}
\draw[fill=\col] (C)--([shift={(-.5*\i,1*\i)}]B)--node[above,align=center] {\A}([shift={(.5*\i,1*\i)}]A)--cycle; 
\end{tikzpicture}

\end{document}

insira a descrição da imagem aqui

Ou como gradientes como este:

\foreach \A/\col [count=\i,evaluate=\i as \j using 10*\i] in {Non-League, League Two,League One,Championship,Premier\\League}
\draw[fill=red!\j] (C)--([shift={(-.5*\i,1*\i)}]B)--node[above,align=center] {\A}([shift={(.5*\i,1*\i)}]A)--cycle;

insira a descrição da imagem aqui

Responder3

Estou muito atrasado para esta festa. Acabei de terminar um pequeno projeto com TikBiblioteca Z shapes.geometric, então pensei em dar meus 2 centavos aqui. Nada terrivelmente complicado e sutil aqui - apenas simples TikZ. Existem comentários no código para ajudar. Experimente regular polygon sides=4ou 5ou 6.

\documentclass[]{article}

\usepackage[rgb]{xcolor} %% If you use \pyramidhue, you will need this; TikZ does not work with hsb
\usepackage{xparse}
\usepackage{tikz}

\usetikzlibrary{shapes.geometric,positioning}

%% |=====8><-----| %%

\tikzset{tri/.style={%
        regular polygon,
        regular polygon sides=3, %% For fun, vary this number at will
        minimum size=#1,
        draw,
        thick,
        anchor=north
    },
    ptext/.style={font=\bfseries,align=center,text width=0.8*\pyrsize}
}

\NewDocumentCommand{\pyramid}{sO{}mm}{% #3 size; #4 entries
    \begin{tikzpicture}
        \pgfmathsetmacro{\incrrate}{0.75}% The rate at which the triangles decrease in size
        \coordinate (T) at (0,0);
        \foreach \test/\testi [count=\testnum from 1] in {#4}{\xdef\tot{\testnum}}%
        \pgfmathsetmacro{\incr}{#3/\tot}
        \foreach \step/\col [count=\stepnum from 0] in {#4}{%
            \pgfmathsetlengthmacro{\pyrsize}{#3-\incrrate*\stepnum*\incr}
            \node[tri=\pyrsize,fill=\col] (T\stepnum) at (T) {};
            \ifnum\stepnum=\numexpr\tot-1\relax
                \pgfmathsetlengthmacro{\lift}{0.0*\incr*\incrrate}% raise text in top shape
            \else
                \pgfmathsetlengthmacro{\lift}{0.1*\incr*\incrrate}% raise text in remaining shapes
            \fi
            \node[above=\lift of T\stepnum.south,ptext] {\step\strut};
        }%
    \end{tikzpicture}%
}

\NewDocumentCommand{\pyramidshade}{sO{}mmm}{% #3 size; #4 base shade; #5 entries
    \begin{tikzpicture}
        \pgfmathsetmacro{\incrrate}{0.75}% The rate at which the triangles decrease in size
        \coordinate (T) at (0,0);
        \foreach \test [count=\testnum from 1] in {#5}{\xdef\tot{\testnum}}%
        \pgfmathsetmacro{\incr}{#3/\tot}
        \foreach \step [count=\stepnum from 0] in {#5}{%
            \pgfmathsetlengthmacro{\pyrsize}{#3-\incrrate*\stepnum*\incr}
            \pgfmathsetmacro{\shade}{(\tot-\stepnum)/\tot*100}
            \node[tri=\pyrsize,fill=#4!\shade] (T\stepnum) at (T) {};
            \ifnum\stepnum=\numexpr\tot-1\relax
                \pgfmathsetlengthmacro{\lift}{0.1*\incr*\incrrate}% raise text in top shape
            \else
                \pgfmathsetlengthmacro{\lift}{0.1*\incr*\incrrate}% raise text in remaining shapes
            \fi
            \node[above=\lift of T\stepnum.south,ptext] {\step\strut};
        }%
    \end{tikzpicture}%
}

\NewDocumentCommand{\pyramidhue}{sO{}mm}{% #3 size; #4 entries
    \begin{tikzpicture}
        \pgfmathsetmacro{\incrrate}{0.75}% The rate at which the triangles decrease in size
        \coordinate (T) at (0,0);
        \foreach \test [count=\testnum from 1] in {#4}{\xdef\tot{\testnum}}%
        \pgfmathsetlengthmacro{\incr}{#3/\tot}
        \foreach \step [count=\stepnum from 0] in {#4}{%
            \pgfmathsetlengthmacro{\pyrsize}{#3-\incrrate*\stepnum*\incr}
            \pgfmathsetmacro{\myhue}{(\tot-\stepnum)/\tot}%
            \definecolor{mycolor}{hsb}{\myhue,0.5,1}% See xcolor docs v2.12, page 18 ff.
            \node[tri=\pyrsize,fill=mycolor] (T\stepnum) at (T) {};
            \ifnum\stepnum=\numexpr\tot-1\relax
                \pgfmathsetlengthmacro{\lift}{0.0*\incr*\incrrate}% raise text in top shape
            \else
                \pgfmathsetlengthmacro{\lift}{0.1*\incr*\incrrate}% raise text in remaining shapes
            \fi
            \node[above=\lift of T\stepnum.south,ptext] {\step\strut};
        }%
    \end{tikzpicture}%
}

%% |=====8><-----| %%

\begin{document}

\centering

\pyramid{3.0in}{Non-League/green,League Two/blue!50!white,League One/yellow,Championship/blue!70!white,Premier\\League/orange}

\bigskip

\pyramidshade{3.0in}{purple!70!red!50!white}{Non-League,League Two,League One,Championship,Premier\\League}

\bigskip

\pyramidhue{3.0in}{Non-League,League Two,League One,Championship,Premier\\League}


\end{document}

pirâmide de sombras

informação relacionada