pgfplots y 过滤器代码中使用位集操作

pgfplots y 过滤器代码中使用位集操作

我希望能够生成通过位操作处理 y 轴数据的图表,我尝试过几次,但我认为这是我最接近的一次。我认为问题在于,如果我将其更改为常量值,它会按预期工作,但尝试通过或\bitsetSetDec{B}{#1}使用 y 数据只会导致全为零。...{#1}...{\pgfmathresult}

\documentclass[tikz]{standalone}

\usepackage{pgfplots}
\usepackage{bitset}

\begin{document}

  \begin{tikzpicture}
    \begin{axis}

      \addplot+[y filter/.append code={%
        \bitsetReset{A}%
        \bitsetReset{B}%
        \bitsetSetDec{A}{128}%
        \bitsetSetDec{B}{#1}% <- Possible source of problem
        \bitsetAnd{A}{B}% A &= B
        \def\pgfmathresult{\bitsetGetDec{A}}%
      }] coordinates{(0,16)(1,130)};

    \end{axis}
  \end{tikzpicture}

\end{document}

答案1

pgfplots使用 PGF 的浮点单元 (FPU) 库。它具有不同的数字内部表示,因此您必须来回转换。

\documentclass[tikz]{standalone}

\usepackage{pgfplots}
\usepackage{bitset}

\begin{document}

  \begin{tikzpicture}
    \begin{axis}

      \addplot+[y filter/.append code={%
        \bitsetReset{A}%
        \bitsetReset{B}%
        \bitsetSetDec{A}{128}%
        \pgfmathfloattoint{#1}%
        \bitsetSetDec{B}{\pgfmathresult}%
        \bitsetAnd{A}{B}% A &= B
        \pgfmathfloatparsenumber{\bitsetGetDec{A}}%
      }] coordinates{(0,16)(1,130)};

    \end{axis}
  \end{tikzpicture}

\end{document}

相关内容