![Kreisdiagramm mit Balkendiagrammvergrößerung](https://rvso.com/image/328463/Kreisdiagramm%20mit%20Balkendiagrammvergr%C3%B6%C3%9Ferung.png)
Ich versuche, ein Kreisdiagramm und ein Balkendiagramm auf der rechten Seite zu erhalten, das die Details (Vergrößerung) eines der Segmente des Kreisdiagramms zeigt (siehe beigefügtes Bild). Ich habe bereits den von Bordaigorl bereitgestellten Code verwendetHierum das Kreisdiagramm zu erhalten (siehe MWE unten). Jetzt habe ich Probleme, das Balkendiagramm rechts zu erhalten. Wie bekomme ich das? Danke
Hier ist mein MWE:
\documentclass{book}
\usepackage{pgfplots}
\pgfplotsset{compat=1.3}
\usepackage{tikz}
\makeatletter
\tikzstyle{chart}=[
legend label/.style={font={\scriptsize},anchor=west,align=left},
legend box/.style={rectangle, draw, minimum size=5pt},
axis/.style={black,semithick,->},
axis label/.style={anchor=east,font={\tiny}},
]
\tikzstyle{bar chart}=[
chart,
bar width/.code={
\pgfmathparse{##1/2}
\global\let\bar@w\pgfmathresult
},
bar/.style={very thick, draw=white},
bar label/.style={font={\bf\small},anchor=north},
bar value/.style={font={\footnotesize}},
bar width=.75,
]
\tikzstyle{pie chart}=[
chart,
slice/.style={line cap=round, line join=round, very thick,draw=white},
pie title/.style={font={}},
slice type/.style 2 args={
##1/.style={fill=##2},
values of ##1/.style={}
}
]
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
\newcommand{\pie}[3][]{
\begin{scope}[#1]
\pgfmathsetmacro{\curA}{90}
\pgfmathsetmacro{\r}{1}
\def\c{(0,0)}
\node[pie title] at (90:1.3) {#2};
\foreach \v/\s in{#3}{
\pgfmathsetmacro{\deltaA}{\v/100*360}
\pgfmathsetmacro{\nextA}{\curA + \deltaA}
\pgfmathsetmacro{\midA}{(\curA+\nextA)/2}
\path[slice,\s] \c
-- +(\curA:\r)
arc (\curA:\nextA:\r)
-- cycle;
\pgfmathsetmacro{\d}{max((\deltaA * -(.5/50) + 1) , .5)}
\begin{pgfonlayer}{foreground}
\path \c -- node[pos=\d,pie values,values of \s]{$\v\%$} +(\midA:\r);
\end{pgfonlayer}
\global\let\curA\nextA
}
\end{scope}
}
\newcommand{\legend}[2][]{
\begin{scope}[#1]
\path
\foreach \n/\s in {#2}
{
++(0,-10pt) node[\s,legend box] {} +(5pt,0) node[legend label] {\n}
}
;
\end{scope}
}
\begin{document}
\begin{tikzpicture}
[
pie chart,
slice type={hardcoal}{blue!20},
slice type={lignite}{red!20},
slice type={nuclear}{gray!40},
slice type={res}{green!20},
slice type={ps}{red!50!yellow},
slice type={ng}{yellow!60},
pie values/.style={font={\small}},
scale=2
]
\pie[xshift=1.2cm,values of ps/.style={rotate=45,font=\scriptsize},
values of ng/.style={rotate=60},values of nuclear/.style={pos=0.75},
values of hardcoal/.style={pos=0.75},align=center]{}{18.8/hardcoal,24.9/lignite,15.5/nuclear,25.7/res,5.4/ps,9.6/ng}
\legend[shift={(0cm,-1cm)}]{{Hard coal}/hardcoal, {Lignite}/lignite, {Nuclear}/nuclear}
\legend[shift={(1.25cm,-1cm)}]{{Renewables}/res, {Pumped storage, Heating oil, others}/ps,{Natural gas}/ng}
\end{tikzpicture}
\end{document}
Antwort1
DerRaddiagrammPaket, das ich geschrieben habe, kann verwendet werden.
Es wird ein Befehl \WCtest
definiert, dessen Ausgabe davon abhängt, ob der Prozentsatz größer als 25 ist. Dieser Befehl wird in den Tasten data
und verwendet wheel data
. Hier wird der Prozentsatz mit ermittelt \WCperc
.
Der Abstand zwischen den Scheiben wird mit der Taste eingestellt gap=0.02
.
Die Farbe der Slices wird durch den Schlüssel bestimmt slices style=slice\WCcount
. Dabei werden die Farben wie slice1
folgt definiert und \WCcount
geben die aktuelle Nummer des Slices an.
Der Balken wird ebenfalls mit einem gezeichnet. \wheelchart
Dazu wird die Taste verwendet ybar={2}{5}
, was eine Breite von 2 und eine Höhe von 5 ergibt. Positioniert wird dieser Balken mit der Taste at={(5,-2.5)}
, die den Punkt links unterhalb des Balkens definiert.
\documentclass[border=6pt]{standalone}
\usepackage{wheelchart}
\definecolor{slice1}{RGB}{100,108,33}
\definecolor{slice2}{RGB}{126,27,74}
\definecolor{slice3}{RGB}{161,109,52}
\definecolor{slice4}{RGB}{103,103,103}
\definecolor{slice5}{RGB}{130,72,9}
\definecolor{slice6}{RGB}{0,0,77}
\definecolor{bar1}{RGB}{166,166,166}
\definecolor{bar2}{RGB}{194,153,109}
\definecolor{bar3}{RGB}{1,105,178}
\definecolor{bar4}{RGB}{176,182,144}
\definecolor{bar5}{RGB}{244,244,244}
\definecolor{bar6}{RGB}{168,177,194}
\usepackage{siunitx}
\begin{document}
\begin{tikzpicture}
\sffamily
\def\WCtest#1#2{%
\pgfmathparse{\WCpercentage>25?"#1":"#2"}%
\pgfmathresult%
}
\wheelchart[
anchor xsep=15,
counterclockwise,
data=\WCtest{}{\WCvarB{} \WCperc},
gap=0.02,
perc precision=1,
pie,
slices style=slice\WCcount,
start half=0,
wheel data=\WCtest{\WCvarB\\\WCperc}{},
wheel data style={white,align=center}
]{%
25.7/Renewables,
5.4/{Heating oil,\\Pumped storage\\and others},
9.6/Natural gas,
18.9/Hard coal,
24.9/Lignite,
15.5/Nuclear%
}
\foreach\n in {1,-1}{
\draw ({\n*25.7*1.8}:3)--(5,{\n*2.5});
}
\wheelchart[
at={(5,-2.5)},
data=\WCvarB{} \qty{\WCvarA}{\percent},
data sep=0,
data style={anchor=west},
slices style=bar\WCcount,
ybar={2}{5}
]{%
1.0/Municipal waste,
5.6/Photovoltaic,
3.1/Hydro,
6.8/Biomass,
0.2/Wind offshore,
8.9/Wind onshore%
}
\end{tikzpicture}
\end{document}