
Ich habe drei Probleme mit einem gestapelten Flächendiagramm.
1: Ich möchte die Breite des Diagramms vergrößern, damit es in meine Präsentation passt. Wenn ich jedoch in x-Richtung skaliere, werden auch die Schriftarten (Beschriftungen) skaliert. Wie kann ich das vermeiden?
2: Alles, was ich versucht habe, um die Häkchenbeschriftungen einzugeben, \sffamily
hat nicht funktioniert. Wahrscheinlich habe ich den richtigen Schalter nicht gefunden. Wie würde ich das machen?
3: Ich möchte die ändern xlabels
. Der Plot soll mit 2014 beginnen, aber die Beschriftung mit 2015. Die Häkchen ohne Beschriftung sollen | haben. Ich versuche zu veranschaulichen, was ich für die möchte xlabels
:
__________________________________________
| | | | | | | | | | |
0 2015 2017 2019 2021 2023 2025
Folgendes habe ich bisher versucht:
\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}
\usepackage[ngerman]{babel}
\pgfplotstableread[col sep=comma,header=true]{
Year,pid,pack,diff
2014,4.5,4.5,0
2015,3.1,4,0.9
2016,4.5,5.8,1.3
2017,3.1,4.9,1.8
2018,2.8,5.2,2.4
2019,2.3,3.9,1.6
2020,2,3.9,1.9
2021,2.1,3.9,1.8
2022,2.1,5.5,3.4
2023,0,3.95,3.95
2024,0,4,4
2025,0,3.95,3.95
}\table
\pgfplotsset{
/pgfplots/area cycle list/.style={/pgfplots/cycle list={%
{red,fill=red,mark=none},
{blue,fill=blue,mark=none},
}
},
every axis label = {font=\sffamily},
every tick label/.append style={font=\sffamily},
}
\begin{document}
\begin{tikzpicture}[font=\sffamily]
\begin{axis}[
every axis label={font=\sffamily},
legend style = {font=\sffamily},
label style = {font=\sffamily},
tick style = {font=\sffamily},
area style,
stack plots=y,
enlarge x limits=false,
enlarge y limits=upper,
x tick label style={/pgf/number format/1000 sep=},
ylabel=y, y label style={at={(0.05,1)}},%
xlabel=t, x label style={at={(1,0.0)}},%
]
%\pgftransformxscale{1.5}%scales in xdirection but stretches also the font
\addplot table [x=Year, y=pid, fill=green] {\table} \closedcycle;
\end{axis}
\end{tikzpicture}
\end{document}
Antwort1
- Die Frage istWieSie skalieren das Diagramm. Wenn Sie die Achse direkt mit den Befehlen
width
und skalierenheight
, ändert sich die Schriftgröße nicht. - Dies ist eine sehr häufige Frage und wird beantwortetHierzum Beispiel. Kurz gesagt, Sie haben nur die „normale“ Schriftart geändert, nicht aber die „Mathe“-Schriftart. Und da die
tick
Zahlen im Mathematikmodus gedruckt werden, haben Sie nur die Standard-Mathe-Schriftart erhalten. - Hier können Sie die Beschriftungen einfach „von Hand“ mit dem
xtick
Schlüssel angeben und die Werte eingeben, die Sie anzeigen möchten. Wie Sie im Code sehen, können Sie auch eine „clevere“ Variante verwenden. Mit demminor x tick num
Schlüssel können Sie die Anzahl der kleinen Ticks angeben.
\documentclass{standalone}
\usepackage[ngerman]{babel}
\usepackage[eulergreek]{sansmath}
\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}
\pgfplotstableread[col sep=comma,header=true]{
Year,pid,pack,diff
2014,4.5,4.5,0
2015,3.1,4,0.9
2016,4.5,5.8,1.3
2017,3.1,4.9,1.8
2018,2.8,5.2,2.4
2019,2.3,3.9,1.6
2020,2,3.9,1.9
2021,2.1,3.9,1.8
2022,2.1,5.5,3.4
2023,0,3.95,3.95
2024,0,4,4
2025,0,3.95,3.95
}\table
\pgfplotsset{
/pgfplots/area cycle list/.style={
/pgfplots/cycle list={%
{red,fill=red,mark=none},
{blue,fill=blue,mark=none},
},
},
}
\begin{document}
\begin{tikzpicture}[
font=\sffamily\sansmath,
]
\begin{axis}[
area style,
stack plots=y,
enlarge x limits=false,
enlarge y limits=upper,
x tick label style={/pgf/number format/1000 sep=},
ylabel=y, y label style={at={(0.05,1)}},%
xlabel=t, x label style={at={(1,0.0)}},%
% -------------------------------------------------
% set `xtick's
xtick={2015,2017,...,2025},
% show in between major xticks 1 minor tick
minor x tick num=1,
% change width of the plot
width=10cm,
% and maintain (original) height
% (or also change me, if needed)
height=\axisdefaultheight,
% % if the plot should fill the whole page, try the following key
% scale mode=stretch to fill,
]
%\pgftransformxscale{1.5}%scales in xdirection but stretches also the font
\addplot table [x=Year, y=pid, fill=green] {\table} \closedcycle;
\end{axis}
\end{tikzpicture}
\end{document}