[Tex/LaTex] concentric ring/donut charts

chartsplot

I was checking this question and this other one, and I was wondering if somebody has a solution to create concentric ring/donut charts

I want to accomplish something like this:
example1

Or more in particular something like this:
example2

Because I want to use it for languages and would like to be able to write "汉语" for Chinese…

Does anybody know of a proper way to do it? Many thanks!

Best Answer

Disregarding the recommendations to not use this kind of diagram, it's fairly straightforward to draw those kinds of things, just a matter of drawing some arcs. I didn't try matching the colors, or making any sort of nice interface.

enter image description here

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach [count=\i] \total/\clr in {80/blue,60/red,45/green,25/cyan}
   \draw [line width=2mm,\clr]
     (0.5cm+\i*3mm,0)
     node[above,inner sep=0pt,black,font=\scriptsize]{\total}
     arc[start angle=0,radius=0.5cm+\i*3mm,delta angle=-3.60*\total];
\matrix [every node/.style={right=1.5mm,black,font=\small}] at (2,2) {
   \fill[blue] circle[radius=2mm] node  {Iceland}; \\
   \fill[red] circle[radius=2mm] node  {Switzerland}; \\
   \fill[green] circle[radius=2mm] node  {USA}; \\
   \fill[cyan] circle[radius=2mm] node  {Turkey}; \\
};
\end{tikzpicture}

\begin{tikzpicture}
\foreach [count=\i] \total/\clr in {10/cyan,20/green,30/red,50/blue}
   \draw [line width=2mm,\clr]
     (-0.5cm-\i*2.5mm,0)
%     node[above,inner sep=0pt,black,font=\scriptsize]{\total}
     arc[start angle=180,radius=0.5cm+\i*2.5mm,delta angle=3.60*\total];

\begin{scope}[every node/.style={above,anchor=south west,inner sep=0.5pt,xshift=-2mm,font=\scriptsize}]
\node [cyan] (I) at (0,0.2) {Italian};
\node [green] (F) at (I.north west) {French};
\node [red] (E) at (F.north west) {English};
\node [blue] (H) at (E.north west) {Hungarian};
\end{scope}
\end{tikzpicture}
\end{document}