Meine Frage schliesst sich der folgenden Frage an: Wie kann ich eine Positionierung von Balken in pgfplots erreichen.

Das folgende Minimalbeispiel funktioniert:

Open in Online-Editor
\documentclass[tikz=true]{standalone}
\usepackage{luatextra}
\usepackage{fontspec}
  \setmainfont{Arial}
  \setsansfont{Arial}
  \setmonofont{Consolas}
  \defaultfontfeatures{Ligatures=TeX}

\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}
\usetikzlibrary{calc,shapes,arrows, patterns}
\pgfplotsset{compat=newest}

\begin{document}

\newcommand\StartBox{1E-2}

\begin{tikzpicture}
\begin{axis}  
  \addplot[red] coordinates {
    (1, \StartBox)
    (2, 2*\StartBox)
  }; 
\end{axis}
\end{tikzpicture}

\end{document}

Das hingegen nicht:

Open in Online-Editor
\documentclass[tikz=true]{standalone}
\usepackage{luatextra}
\usepackage{fontspec}
  \setmainfont{Arial}
  \setsansfont{Arial}
  \setmonofont{Consolas}
  \defaultfontfeatures{Ligatures=TeX}

\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}
\usetikzlibrary{calc,shapes,arrows, patterns}
\pgfplotsset{compat=newest}

\begin{document}

\newcommand\BoxWidth{8pt}
\newcommand\StartBox{2E-8}

\begin{tikzpicture}[
  boxlabel/.style={pos=.02,left,font=\tiny}
]
\begin{semilogyaxis}[
  % ----- Allgemein -----
  width  = \textwidth,
  height = 7cm,
  enlargelimits =false,
  date coordinates in = x,
  date ZERO = {2015-08-01 00:00},
  every axis plot/.append style={const plot, mark=\empty, line width=\BoxWidth},
  %
  %----- x Achse -----
  xmin = 2015-08-09 00:00,
  xmax = 2015-09-13 00:00,
  xticklabel={\day.\month},
  try min ticks=30,
  major x tick style ={black},
  minor x tick num=3,
  xmajorgrids,
  xminorgrids,
  xlabel = {Jahreshauptrevision 2015},
  xticklabel style = {anchor=east, rotate=90, font=\tiny},
  %
  %----- y-Achse -----
  ymin=1E-8,
  ymax=1E-7,
  ylabel = {CFDF},
  ymajorgrids,
  yminorgrids,
  major y tick style={black},
  minor y tick style={black},
]

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

  \addplot[blue] coordinates {
    (2015-08-12 00:00, 4E-8)
    (2015-09-02 12:00, 4E-8) };

% Das hier funktioniert leider nicht:
% 
%  \addplot[green] coordinates {
%    (2015-08-12 00:00, 2*\StartBox)
%    (2015-09-02 12:00, 2*\StartBox) };
\end{semilogyaxis}
\end{tikzpicture}

\end{document}

Irgendwie mag es plötzlich 4*\StartBox nicht.

gefragt 21 Apr '15, 08:27

dzaic's gravatar image

dzaic
721829
Akzeptiert: 85%

bearbeitet 21 Apr '15, 10:23

Minibsp. solltest Du m.M.n. immer angeben, damit man daran arbeiten und ausprobieren kann. ;)

(21 Apr '15, 09:36) cis

@dzaic Ich habe unter Wie kann ich die Postionierung von Balken in pgfplots erreichen? eine zweite Antwort gepostet, die Dir für Dein eigentliches Problem vielleicht auch erstmal weiterhilft. Die Frage hier beantwortet sie aber nicht.

(21 Apr '15, 11:20) esdd

Man kann innerhalb der pgfplots-Koordinaten nicht “rechnen”. Das bedeutet, dass da nur Ergebnisse stehen dürfen und keine Ausdrücke (lvalues für Programmierer). Man muss also das Ergebnis vorher ausrechnen und dann einsetzen.

Da die Werte, die wir berechnen wollen sehr klein sind benötigen wir die FPU (Floating Point Unit). Um diese in pgfplots benutzen zu können müssen wir die entsprechenden Instruktionen gruppieren, da die Achsenformatierungen von pgfplots nicht mit der FPU umgehen können.

Außerdem habe ich alles entfernt, was für das Beispiel nicht benötigt wird.

Open in Online-Editor
\documentclass{article}

\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}

\begin{document}

\newcommand\BoxWidth{8pt}
\newcommand\StartBox{2E-8}

\begin{tikzpicture}
\begin{semilogyaxis}[
  date coordinates in = x,
  date ZERO = {2015-08-01 00:00},
  every axis plot/.append style={const plot, mark=\empty, line width=\BoxWidth},
  xmin = 2015-08-09 00:00,
  xmax = 2015-09-13 00:00,
  xticklabel={\day.\month},
  xticklabel style = {anchor=east, rotate=90, font=\tiny},
  try min ticks=30,
  ymin=1E-8,
  ymax=1E-7,
]

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

  \addplot[blue] coordinates {
    (2015-08-12 00:00, 4E-8)
    (2015-09-02 12:00, 4E-8) };

  {
    \pgfkeys{/pgf/fpu,/pgf/fpu/output format=sci}
    \pgfmathparse{2*\StartBox}
    \xdef\StartBoxTwo{\pgfmathresult}
  }
  \addplot[green] coordinates {
    (2015-08-12 00:00, \StartBoxTwo)
    (2015-09-02 12:00, \StartBoxTwo) };
\end{semilogyaxis}
\end{tikzpicture}

\end{document}

alt text

Permanenter link

beantwortet 06 Jul, 11:34

Henri's gravatar image

Henri
10.0k31730

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×160

Frage gestellt: 21 Apr '15, 08:27

Frage wurde angeschaut: 1,052 Mal

Zuletzt aktualisiert: 06 Jul, 11:34