
Ich habe mich gefragt, ob mir jemand den einfachsten Weg zeigen kann, das folgende Bild zu skizzieren. Ich habe angefangen, die Achsenumgebung aus dem pgfplots-Paket zu verwenden, wie Sie an meinem Code unten sehen können, aber dann bin ich nicht mehr weitergekommen.
Ich danke Ihnen im Voraus!
\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}
Antwort1
Ich glaube nicht, dass es notwendig ist, zu verwenden pgfplots
. Ich denke, Sie können den gewünschten Effekt (und etwas einfacher) erzielen, wenn Sie nur verwenden 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}
Die Grundidee hier ist, dass \draw
Befehle eigentlich eine Art Pfad sind und node
s entlang dieser Pfade definiert werden können. Insbesondere können wir die Position eines Knotens angeben, indem wir pos=<val>
in dem optionalen Argument für den Knoten verwenden. Die Verankerung hilft, den Text relativ zu der Stelle zu platzieren, an der wir ihn haben möchten. text width
in Kombination mit align
hilft, die Beschriftungen entlang der x
-Achse umzubrechen und zu zentrieren (ich habe früher ~
und well
zusammengehalten fulfilled
). Schließlich kann auch die Farbe des Textes mithilfe text=<color>
der optionalen Argumente angegeben werden. Schließlich habe ich verwendet, .. controls (<coordinate>) and (<coordinate>) ..
um die Kurven zu konstruieren. Mir fällt jetzt ein, dass ich hätte versuchen sollen, diese entlang der -Achse etwas asymptotischer zu machenLeistung, aber die Feinabstimmung überlasse ich Ihnen.
Antwort2
Für diese Art von halbtechnischer Skizze könnten Sie Folgendes in Betracht ziehen:Metapostals alternatives Werkzeug. Hier bin ich meiner bevorzugten Reihenfolge gefolgt, um alles schön organisiert zu halten: Definieren Sie die Pfade (so weit wie möglich relativ zueinander); zeichnen Sie sie; fügen Sie dann die Beschriftungen hinzu.
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.
Anmerkungen
Der obige Link zeigt Ihnen verschiedene Ansätze zur Integration von MP in Ihren Arbeitsablauf und enthält Links zu den Handbüchern.
Ich habe für alle Pfade ziemlich lange Namen verwendet, damit Sie leichter verfolgen können, was getan wird
Sie können den Maßstab der Zeichnung ändern, indem Sie den Wert
u
oben anpassen.Gerade Wege bestehen nur aus einem Abschnitt, also
point 0
dem Anfang undpoint 1
dem Ende.Ich habe es
satisfaction
als eine um 90 Grad im Uhrzeigersinn gedrehte Kopiefulfillment
undbasic
als eine um 180 Grad gedrehte Kopie definiertexcitement
. Dadurch wird das Diagramm schön symmetrisch.Ich habe einige sehr einfache TeX-Befehle definiert, mit denen ich die Beschriftungen sauber festlegen kann. Sie können auch LaTeX verwenden, wie im Handbuch erklärt. Tatsächlich können Sie mit dem
gmp
Paket oder mitluatex
MPcontext
-Code als Teil Ihrer LaTeX-Quelldatei einbinden, wie bei TikZ.