Eigentlich habe ich zwei Fragen:

1) Wie bekomme ich es hin, dass meine Datumswerte auf der x-Achse tageweise angezeigt werden und zwischen den Tagen jeweils 4 Hilfslinien (entspricht 6 h) angezeigt werden?

2) Warum werden die gelbe und graue Linie plötzlich gestrichelt dargestellt?

Open in Online-Editor
\documentclass{standalone}
\usepackage{luatextra}
\usepackage{fontspec}
  \setmainfont{Arial}
  \setsansfont{Arial}
  \setmonofont{Consolas}
  \defaultfontfeatures{Ligatures=TeX}
\usepackage{tikz, pgfplots}
\usepgfplotslibrary{dateplot}
\usetikzlibrary{shapes,arrows, patterns}

\begin{document}
 \newcommand\MyLineWith{5pt}
\begin{tikzpicture}
  \begin{axis}[
    %axis background/.style = {shade,top color=gray!50,bottom color=gray!50},
    axis on top = true,
    width = \textwidth,
    height = 5cm,
    enlargelimits=false,
    ymin=0, ymax=5,
    yticklabels={,,},
    date coordinates in = x,
    date ZERO = 2015-08-01 00:00,
    xmin = 2015-08-09 00:00,
    xmax = 2015-09-06 00:00,
    xticklabel style = {anchor=east, rotate=90, font=\tiny}
  ]

  % CRD
  \addplot+[const plot, line width=\MyLineWith, color=red, mark=] coordinates {
    (2015-08-11 06:00, 1.0)
    (2015-09-01 05:00, 1.0)};

  % SEHR
  \addplot+[const plot, line width=\MyLineWith, color=blue, mark=] coordinates {
    (2015-08-12 00:00, 1.5)
    (2015-09-02 12:00, 1.5)};

   % Div. 21
  \addplot+[const plot, line width=\MyLineWith, color=green, mark=] coordinates {
    (2015-08-13 03:00, 2.0)
    (2015-08-23 07:00, 2.0)};

  % Div. 11
  \addplot+[const plot, line width=\MyLineWith, color=orange, mark=] coordinates {
    (2015-09-04 22:00, 2.5)
    (2015-08-23 07:00, 2.5)};

  % HPCS
  \addplot+[const plot, line width=\MyLineWith, color=black, mark=] coordinates {
    (2015-08-13 03:00, 3.0)
    (2015-09-01 08:00, 3.0)};

  % 380 kV AC20
  \addplot+[const plot, line width=\MyLineWith, color=yellow, mark=] coordinates {
    (2015-08-13 10:00, 3.5)
    (2015-08-24 15:00, 3.5)};

  % 380 kV AC60
  \addplot+[const plot, line width=\MyLineWith, color=gray, mark=] coordinates {
    (2015-08-13 10:00, 4.0)
    (2015-08-20 15:00, 4.0)};
  \end{axis}
\end{tikzpicture}
\end{document}

Bild

gefragt 08 Apr '15, 18:21

dzaic's gravatar image

dzaic
631154954
Akzeptiert-Rate: 42%

bearbeitet 08 Apr '15, 18:22


Eigentlich wäre es besser gewesen, zwei getrennte Fragen zu stellen.

Datum tageweise an x-Achse

Du könntest alle xtick-Werte explizit vorgeben mit

Open in Online-Editor
xtick={2015-08-09 00:00,2015-08-10 00:00,2015-08-11 00:00}

Die ganzen anderen müssten natürlich ebenfalls noch eingetragen werden ... Deshalb ist es vermutlich einfacher, die try x tick num auf einen passenden Wert zu setzen. Allerdings erhöht das auch die Anzahl der Ticks an der y-Achse. Das kann man verhindern, in dem man die ytick explizit vorgibt mit zum Beispiel ytick={1,1.5,...,4} oder, wenn sie gar nicht benötigt werden, mit ytick=\empty ganz entfernt.

Ich gehe jetzt außerdem davon aus, dass Du mit Hilfslinien Gitterlinien meinst. Dazu werden zwischen den den Ticks der einzelnen Tage noch je drei minor ticks benötigt. Die erhält man mit minor x tick num=3. Die Gitterlinien erhält man dann mit xminorgrids,xmajorgrids. Da die kleinen Tick-Striche dann kaum sichtbar sind, lasse ich sie für die minor tick nicht zeichnen und für die major tick ändere ich die Farbe zu schwarz. Damit die Striche des Gitters nicht über die Balken gezeichnet werden, kommentiere ich die Option axis on top = true aus.

Darstellung der Balken

In einer axis Umgebung werden oft mehrere Plots dargestellt. Damit diese unterschieden werden können, wird eine sogenannte cycle list verwendet, die dann je nach Plotnummer unterschiedliche Farben, Marker oder auch Linienstile verwendet. Die Verwendung der für die Plotnummer gespeicherten Einstellungen kann man unterbinden in dem man das optionale Argument von \addplot nutzt, das auch leer sein kann. Steht allerdings wie bei Dir ein + zwischen \addplot und dem optionalen Argument, dann werden die in der cycle list für die Plotnummer gespeicherten Einstellungen nur um die Optionen ergänzt. Für den 6. und 7. Plot sind bei der genutzten cycle list gestrichelte Linien vorgegeben, weshalb der gelbe und graue Balken gestrichelt wird.

Du kannst das also ändern, in dem Du einfach das + hinter \addplot weglässt. Dann musst Du auch nicht jedes Mal mark= angeben. Da für alle Plots in dieser axis Umgebung const plot und line width=5pt gilt, schreibe ich das auch gleich in die Optionen der axis Umgebung.

Open in Online-Editor
\documentclass{standalone}
\usepackage{luatextra}
\usepackage{fontspec}
  \setmainfont{Arial}
  \setsansfont{Arial}
  \setmonofont{Consolas}
  \defaultfontfeatures{Ligatures=TeX}
\usepackage{pgfplots}% lädt auch tikz
\usepgfplotslibrary{dateplot}
\pgfplotsset{
  compat=1.12
}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    %axis background/.style = {shade,top color=orange!50,bottom color=purple!50},
    %axis on top = true,
    width = \textwidth,
    height = 5cm,
    enlargelimits=false,
    ymin=0, ymax=5,
    %yticklabels={,,},
    date coordinates in = x,
    date ZERO = 2015-08-01 00:00,
    xmin = 2015-08-09 00:00,
    xmax = 2015-09-06 00:00,
    xticklabel style = {anchor=east, rotate=90, font=\tiny},
%
    ytick=\empty,
    try min ticks=29,
    minor x tick num=3,
    minor tick style={draw=none},
    major x tick style={black},
    xminorgrids,xmajorgrids,
    every axis plot/.append style={const plot, line width=5pt}
  ]

  % CRD
  \addplot[red] coordinates {
    (2015-08-11 06:00, 1.0)
    (2015-09-01 05:00, 1.0)};

  % SEHR
  \addplot[blue] coordinates {
    (2015-08-12 00:00, 1.5)
    (2015-09-02 12:00, 1.5)};

   % Div. 21
  \addplot[green] coordinates {
    (2015-08-13 03:00, 2.0)
    (2015-08-23 07:00, 2.0)};

  % Div. 11
  \addplot[orange] coordinates {
    (2015-09-04 22:00, 2.5)
    (2015-08-23 07:00, 2.5)};

  % HPCS
  \addplot[black] coordinates {
    (2015-08-13 03:00, 3.0)
    (2015-09-01 08:00, 3.0)};

  % 380 kV AC20
  \addplot[yellow] coordinates {
    (2015-08-13 10:00, 3.5)
    (2015-08-24 15:00, 3.5)};

  % 380 kV AC60
  \addplot[gray] coordinates {
    (2015-08-13 10:00, 4.0)
    (2015-08-20 15:00, 4.0)};
  \end{axis}
\end{tikzpicture}
\end{document}

alt text


Alternativ könnte man sich auch eine eigene cycle list mit einem Namen wie mylist definieren und diese dann mit cycle list name=mylist für die axis Umgebung verwenden. Weitere Informationen dazu findet man in der Dokumentation zu pgfplots.

Open in Online-Editor
\documentclass{standalone}
\usepackage{luatextra}
\usepackage{fontspec}
  \setmainfont{Arial}
  \setsansfont{Arial}
  \setmonofont{Consolas}
  \defaultfontfeatures{Ligatures=TeX}
\usepackage{pgfplots}% lädt auch tikz
\usepgfplotslibrary{dateplot}
\pgfplotsset{
  compat=1.12
}

\pgfplotscreateplotcyclelist{mylist}{
  red,blue,green,orange,black,yellow,gray}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    %axis background/.style = {shade,top color=orange!50,bottom color=purple!50},
    %axis on top = true,
    width = \textwidth,
    height = 5cm,
    enlargelimits=false,
    ymin=0, ymax=5,
    %yticklabels={,,},
    date coordinates in = x,
    date ZERO = 2015-08-01 00:00,
    xmin = 2015-08-09 00:00,
    xmax = 2015-09-06 00:00,
    xticklabel style = {anchor=east, rotate=90, font=\tiny},
%
    ytick=\empty,
    try min ticks=29,
    minor x tick num=3,
    minor tick style={draw=none},
    major x tick style={black},
    xminorgrids,xmajorgrids,
    every axis plot/.append style={const plot, line width=5pt},
    cycle list name=mylist
  ]

  % CRD
  \addplot coordinates {
    (2015-08-11 06:00, 1.0)
    (2015-09-01 05:00, 1.0)};

  % SEHR
  \addplot coordinates {
    (2015-08-12 00:00, 1.5)
    (2015-09-02 12:00, 1.5)};

   % Div. 21
  \addplot coordinates {
    (2015-08-13 03:00, 2.0)
    (2015-08-23 07:00, 2.0)};

  % Div. 11
  \addplot coordinates {
    (2015-09-04 22:00, 2.5)
    (2015-08-23 07:00, 2.5)};

  % HPCS
  \addplot coordinates {
    (2015-08-13 03:00, 3.0)
    (2015-09-01 08:00, 3.0)};

  % 380 kV AC20
  \addplot coordinates {
    (2015-08-13 10:00, 3.5)
    (2015-08-24 15:00, 3.5)};

  % 380 kV AC60
  \addplot coordinates {
    (2015-08-13 10:00, 4.0)
    (2015-08-20 15:00, 4.0)};
  \end{axis}
\end{tikzpicture}
\end{document}
Permanenter link

beantwortet 08 Apr '15, 21:36

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

@esdd Herzlichen Dank für die hervorragende Antwort!

(09 Apr '15, 12:32) dzaic
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×298
×19

gestellte Frage: 08 Apr '15, 18:21

Frage wurde gesehen: 10,518 Mal

zuletzt geändert: 09 Apr '15, 12:32