2

I tried to draw three circles aligned together.

\documentclass[tikz,border=2mm]{standalone} 
\usetikzlibrary{positioning, decorations.text}

\begin{document} \begin{tikzpicture}

\node[circle, minimum size=8cm, draw, fill=pink,anchor=west] (a) {ppou}; \node[circle, minimum size=6cm, draw, fill=green, anchor=west] (b) {oooo};

\node[circle, minimum size=3.6cm, draw, fill=orange, anchor=west] (c) {Inner Market};

\draw [decorate, decoration={text along path, } ] (0:7) arc (30:-70:5.5cm); \draw [decorate, decoration={text along path, text = Private Market } ] (0:4.5) arc (-0:-60:4.6cm);

\draw [decorate, decoration={text along path, text = Total Market}] (0:6.7) arc (0:-90:6cm);

\end{tikzpicture} \end{document}

How could I better align the text in the outer and middle circle to make it looks better?

enter image description here

Victor Li
  • 23
  • 3

3 Answers3

2

An example of short code where circle styles has three parameters:

\documentclass[tikz,margin=3mm]{standalone}

\begin{document} \begin{tikzpicture}[ C/.style args = {#1/#2/#3}{circle, draw, anchor=west, minimum size=#1, fill=#2, label = {[text width=4em, align=left, anchor=east]east:#3}, node contents={}}, ] \node[C=6cm/pink/Total Market]; \node[C=4cm/green/Private Market]; \node[C=2cm/orange/Inner Market]; \end{tikzpicture} \end{document}

enter image description here

Zarko
  • 296,517
1

Here are two more alternatives for you:

  • left: putting two (or three) more nodes as labels
  • right: same idea, but anchored south (i.e. using same amount of space)

results

Did some refactoring wrt styles, also to simplify code lines:

 \begin{tikzpicture}[
    crc/.style={circle,anchor=west,draw},
    lbl/.style={align=center},
    ]
    % ~~~ cicles ~~~~~~~~~~~~~~~~~~~~~
    \node[crc, minimum size=8cm, fill=pink]     (a) {};
...

To place the labels, just shift them wrt to the colored nodes, either using cartesian or polar notation:

    % ... two alternatives ...........
    \node[yshift=33mm]  at (a)                  {Total Market};
    \node[lbl]          at ([shift=(30:3.0)] a) {Total\\Market};

Code:

\documentclass[tikz,border=2mm]{standalone}

\begin{document} \begin{tikzpicture}[ crc/.style={circle,anchor=west,draw}, lbl/.style={align=center}, ] % ~~~ cicles ~~~~~~~~~~~~~~~~~~~~~ \node[crc, minimum size=8cm, fill=pink] (a) {}; \node[crc, minimum size=6cm, fill=green,] (b) {}; \node[crc, minimum size=3.6cm, fill=orange] (c) {Inner Market}; % ~~~ labels ~~~~~~~~~~~~~~~ \node[yshift=22mm] at (b) {Private Market}; % ... two alternatives ........... \node[yshift=33mm] at (a) {Total Market}; \node[lbl] at ([shift=(30:3.0)] a) {Total\Market}; \end{tikzpicture}

\begin{tikzpicture}[ crc/.style={circle,anchor=south,draw}, %lbl/.style={align=center}, ] % ~~~ cicles ~~~~~~~~~~~~~~~~~~~~~ \node[crc, minimum size=8cm, fill=pink] (a) {}; \node[crc, minimum size=6cm, fill=green,] (b) {}; \node[crc, minimum size=3.6cm, fill=orange] (c) {Inner Market}; % ~~~ labels ~~~~~~~~~~~~~~~ \node[yshift=16mm] at (b) {Private Market}; \node[yshift=27mm] at (a) {Total Market}; \end{tikzpicture} \end{document}

MS-SPO
  • 11,519
1

As already said in comments, the text will be more comfortable to read if it is horizontal. For the second and third circle, you can split it over two lines to have enough room. For the first circle I would keep your text as it is, so the circle does not look too empty:

\documentclass[tikz,border=2mm]{standalone} 
\usetikzlibrary{positioning, decorations.text}

\begin{document} \begin{tikzpicture}

\node[circle, minimum size=8cm, draw, fill=pink,anchor=west] (a) {ppou}; \node[circle, minimum size=6cm, draw, fill=green,anchor=west] (b) {oooo}; \node[circle, minimum size=3.6cm, draw, fill=orange, anchor=west] (c) {Inner Market};

\node[text width=2cm,align=center] at (4.75cm,0) {Private Market}; \node[text width=2cm,align=center] at (7cm,0) {Total Market};

\end{tikzpicture} \end{document}

enter image description here