Einige Probleme mit einem gestapelten Flächendiagramm - pgfplot

Einige Probleme mit einem gestapelten Flächendiagramm - pgfplot

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?

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

2: Alles, was ich versucht habe, um die Häkchenbeschriftungen einzugeben, \sffamilyhat 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

  1. Die Frage istWieSie skalieren das Diagramm. Wenn Sie die Achse direkt mit den Befehlen widthund skalieren height, ändert sich die Schriftgröße nicht.
  2. 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 tickZahlen im Mathematikmodus gedruckt werden, haben Sie nur die Standard-Mathe-Schriftart erhalten.
  3. Hier können Sie die Beschriftungen einfach „von Hand“ mit dem xtickSchlü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 dem minor x tick numSchlü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}

Bild, das das Ergebnis des obigen Codes zeigt

verwandte Informationen