
Gostaria de saber se alguém pode me indicar a maneira mais fácil de esboçar a imagem a seguir. Comecei a usar o ambiente axis do pacote pgfplots como você pode ver no meu código abaixo, mas fiquei preso.
Eu agradeço antecipadamente!
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle,axis equal,grid=both]
\addplot coordinates{(0,0) (5,5) };
\end{axis}
\end{tikzpicture}
\end{document}
Responder1
Não creio que seja necessário usar pgfplots
. Acho que você pode obter o efeito desejado (e um pouco mais fácil) usando apenas tikz
.
\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\coordinate (Q) at (0,0);
%% put this first even though you can use opacity.
\coordinate (indifferent/nw) at (-0.5in,0.5in);
\fill[gray,opacity=0.20] (indifferent/nw) rectangle ++ (1in,-1in);
\path (indifferent/nw) ++ (-0.5cm,0.5cm) node[anchor=south east] (indifferent/label) {indifference};
\draw (indifferent/nw) -- (indifferent/label.base east);
\draw[arrows=-Stealth,purple]
(Q) ++ (-2in,0) node [anchor=east,align=center,text width=0.75in]
{Need not~fulfilled}
--
++ (4in,0) node [anchor=west,align=center,text width=0.75in]
{Need well~fulfilled};
\draw[arrows=-Stealth,purple]
(Q) ++ (0,-2in) node [anchor=north,align=center,text width=0.75in]
{dissatisfied}
--
++ (0,4in) node [anchor=south,align=center,text width=0.75in]
{satisfied};
\draw[blue,text=blue]
(Q) ++ (-2in,-2in)
--
++ (4in,4in) node[pos=0.75,anchor=north west] {Performance};
\draw[red,text=red]
(Q) ++ (-2in,0.25cm) .. controls (-0.5cm,0.25cm) and
( 0.5cm,1.00cm)
..
(1.25in,2in)
node[pos=0.95,anchor=south east] {Excitement};
\draw[red,text=red]
(Q) ++ (-1.25in,-2in) .. controls (-0.5cm,-1.00cm) and
( 0.5cm,-0.45cm)
..
(2in,-0.5cm)
node[pos=0.80,anchor=north west] {Basic};
\end{tikzpicture}
\end{document}
A ideia básica aqui é que \draw
os comandos são realmente uma espécie de caminho e node
podem ser definidos ao longo desses caminhos. Em particular, podemos especificar a posição de um nó usando pos=<val>
o argumento opcional para o nó. A ancoragem ajuda a posicionar o texto em relação ao local onde o desejamos. text width
em combinação com align
ajuda a fazer com que os rótulos ao longo do x
eixo - se envolvam e centralizem (eu costumava ~
juntar well
e fulfilled
colar). Finalmente, a cor do texto também pode ser especificada usando text=<color>
argumentos opcionais. Por fim, usei .. controls (<coordinate>) and (<coordinate>) ..
para construir as curvas. Ocorre-me agora que eu deveria ter tentado torná-los um pouco mais assintóticosdesempenho, mas eu deixei você ajustar isso.
Responder2
Para este tipo de esboço semitécnico você pode considerarMetapostcomo uma ferramenta alternativa. Aqui segui minha sequência preferida para manter tudo bem organizado: definir os caminhos (em relação uns aos outros, na medida do possível); desenhe-os; em seguida, adicione os rótulos.
prologues := 3;
outputtemplate := "%j%c.eps";
beginfig(1);
% set a unit scale
u := 1cm;
% define the various paths
path fulfillment, satisfaction, indifference, performance, excitement, basic;
indifference = unitsquare shifted -(1/2,1/2) scaled 2u;
fulfillment = (left--right) scaled 3u;
satisfaction = fulfillment rotated 90;
performance = (xpart point 0 of fulfillment, ypart point 0 of satisfaction)
-- (xpart point 1 of fulfillment, ypart point 1 of satisfaction);
excitement = point 0 of fulfillment shifted (0,1/3u)
{direction 0 of fulfillment} ..
{direction 1 of performance}
point 1 of performance shifted (-1/3u,0);
basic = excitement rotated 180;
% draw the paths
fill indifference withcolor .9 white;
drawarrow fulfillment withcolor .5 white;
drawarrow satisfaction withcolor .5 white;
draw performance withcolor .67 blue;
draw excitement withcolor .67 red;
draw basic withcolor .67 green;
% do the labels
verbatimtex
\font\ss=phvr8r\ss
\def\s#1{$\vcenter{\halign{\hfil{##}\hfil\cr#1\crcr}}$}\let\\\cr
etex
label(btex \s{satisfied} etex, point 1 of satisfaction shifted 10 up);
label(btex \s{dissatisfied} etex, point 0 of satisfaction shifted 10 down);
label(btex \s{needs not\\fulfilled} etex, point 0 of fulfillment shifted 28 left);
label(btex \s{needs well\\fulfilled} etex, point 1 of fulfillment shifted 28 right);
z1 = point 3 of indifference shifted (-u/2,u/2); draw point 3 of indifference -- z1 withcolor .9 white;
label.lft(btex \s{indifference} etex, z1 + 3 up) withcolor .7 white;
label.ulft(btex \s{excitement} etex, point .9 of excitement) withcolor .67 red;
label.lrt (btex \s{performance} etex, point .8 of performance) withcolor .67 blue;
label.lrt (btex \s{basic} etex, point .2 of basic) withcolor .67 green;
endfig;
end.
Notas
O link acima mostra várias abordagens para integrar o MP ao seu fluxo de trabalho e contém links para os manuais.
Usei nomes bastante longos para todos os caminhos para que você pudesse acompanhar o que estava sendo feito com mais facilidade
Você pode alterar a escala do desenho ajustando o valor
u
na parte superior.Caminhos retos têm apenas um segmento, assim como
point 0
o começo epoint 1
o fim.Eu defini
satisfaction
como uma cópiafulfillment
girada 90 graus no sentido horário ebasic
como uma cópiaexcitement
girada 180. Isso torna o diagrama bonito e simétrico.Eu defini alguns comandos TeX simples e muito simples para me permitir definir os rótulos de maneira organizada. Você também pode usar o LaTeX, conforme explicado no manual. Na verdade, com o
gmp
pacote, ou comluatex
oucontext
você pode incluir o código MP como parte do seu arquivo fonte LaTeX, como o TikZ.