pgfplots:如何在 x 轴和网格上标记每第 n 天(第七天)?

pgfplots:如何在 x 轴和网格上标记每第 n 天(第七天)?

首先,这不是科学,这只是在摆弄 pgfplots。我的计算可能完全错误。

我正在绘制图表。x 轴表示天数。我想在图表中突出显示星期日(2020 年 3 月 15 日、21 日、29 日)。也许通过将日期打印为\textbf{},更好的方法是在网格中获得一条突出显示的线。随便吧。

我将在接下来的几周继续绘制这个图表,因此每周日都能自动突出显示就更好了。

妇女权利委员会:

\documentclass[paper=landscape, DIV=20, ngerman]{scrarticle}
\usepackage[T1]{fontenc}
 \usepackage{libertine, babel}
 \usepackage[libertine]{newtxmath}
% \usepackage{translator}%% Fehlermeldung
 \usepackage{pgfplots, pgfplotstable, array, booktabs, mathastext, xcolor,
   colortbl, pgfcalendar}

\pgfplotsset{compat=1.17}
\usepgfplotslibrary{dateplot}

\pagestyle{empty}

\begin{filecontents}{Verdoppelungszeit.csv}

Tag BRD RhPf
2020-03-10  654 18
2020-03-11  1089    25
2020-03-12  1892    52
2020-03-13  2576    102
2020-03-14  3421    121
2020-03-15  4195    168
2020-03-16  5433    325
2020-03-17  7156    442
2020-03-18  8198    474
2020-03-19  10999   637
2020-03-20  13957   801
2020-03-21  16662   938
2020-03-22  18610   1053
2020-03-23  22672   1177
2020-03-24  27436   1370
2020-03-25  31554   1591
2020-03-26  36508   1816
2020-03-27  42288   1971
2020-03-28  48582   2212
2020-03-29  52547   2396
2020-03-30  57298   2584
2020-03-31  61913   2726
\end{filecontents}

\begin{document}

\pgfplotstableset{% could be used in preamble
  create on use/brdoppel/.style=
{create col/expr={ln(2)/(ln((\thisrowno{1}-\prevrowno{1})/\prevrowno{1}+1))}}}

\pgfplotstableset{% could be used in preamble
create on use/rhpfdoppel/.style=
{create col/expr={ln(2)/(ln((\thisrowno{2}-\prevrowno{2})/\prevrowno{2}+1))}}}

\begin{tikzpicture}
  \begin{semilogyaxis}[
    unbounded coords=discard,
    height=16cm,
    xlabel=Datum, grid=major,
    legend entries= {Fallzahl BRD, Verdopplungszeit in Tagen BRD, Fallzahl Rh.-Pf.,
    Verdoppelungszeit Rh.-Pf.},
    legend style={%
      at={(0.9,0.535)}, anchor=east, draw=none,
    },
    date coordinates in=x,
    xticklabel={\scriptsize\day.\month.},
    x tick label style={rotate=45,anchor=north east},
    % x filter/.code{%
    %   \ifdate{weekend}{\color{black!50}}{\color{black}}%
    % }
]

\addplot [blue, thick]
          table [%
          x=Tag, y=BRD, xlabel style={font=\sffamily}]{Verdoppelungszeit.csv};

\addplot+ [blue, mark=*,mark options={fill=white}, thin,
          restrict y to domain=0.1:inf]
          table [x=Tag, y=brdoppel]{Verdoppelungszeit.csv};

\addplot [red, thick, mark=] table [x=Tag, y=RhPf]{Verdoppelungszeit.csv};

\addplot+ [red, mark=triangle*, thin, restrict y to domain=-1:inf, mark repeat=7]
         table [x=Tag, y=rhpfdoppel]{Verdoppelungszeit.csv};

  \end{semilogyaxis}
\end{tikzpicture}

\KOMAoptions{paper=portrait}\recalctypearea

\pgfplotstabletypeset[%
    use comma,% Komma als Dezimaltrenzeichen
    column type=r, 
    every head row/.style={before row=\toprule,after row=\midrule},
    assign column name/.style={
      /pgfplots/table/column name={\textbf{#1}}},
    columns={Tag,BRD,brdoppel, RhPf, rhpfdoppel},
    columns/brdoppel/.style={column name=BRD-Doppel, dec sep align},
    columns/rhpfdoppel/.style={column name=Rh.-Pf.-Doppel, dec sep align},
    columns/Tag/.style={date type={\weekdayshortname , \day.\month.},},
    every nth row={7[-2]}{before row=\rowcolor[gray]{0.9}},
]{Verdoppelungszeit.csv}

\end{document}

正如您在代码中所看到的,x filterwith\ifdate{weekenend}不起作用,pdflatex 陷入了循环。

顺便说一句,如果我取消注释该行,\usepackage{translator}我也会出现错误,但不知道原因。

Linux 上的 texlive 2020。

图表图片

相关内容