TikZ/PGFPlots を使用して軸なしでカラーバー内に ytick を設定する際の問題

TikZ/PGFPlots を使用して軸なしでカラーバー内に ytick を設定する際の問題

私は、横に軸のないカラーバーを TikZ で作成したいと考えています。これは、この優れたフォーラムが提供するヘルプを使用して、これまでに得たものです。

写真1: 現時点での結果

私の問題:y 目盛りを次のようにします: -2e-3、-1,5e-3、-1e-3、...、2e-3。

たとえば、別のプログラムの図 2 を参照してください。

写真2: y目盛りはこんな感じ

$-2e-3$y 目盛りのようなものを使用しても機能しません。

エラー:! パッケージ PGF Math エラー: 入力 '$-2^{-3}$' を浮動小数点数として解析できませんでした。読み取り不可能な部分は '$-2^{-3}$' の近くにありました。

これまでのコードは次のとおりです。(このコードを使用すると、上記の画像 1 が表示されます。)

\documentclass[tikz,border={12pt,12pt}]{standalone}
\usepackage{pgfplots}
\begin{document}

\begin{tikzpicture}
\begin{axis}[
    hide axis,
    scale only axis,                % 
    height=0pt,                     % Grafik auf größe null
    width=0pt,                      % Grafik auf größe null
    colorbar sampled,               % Diskrete Stufung
    colormap={mymap}{[1pt] rgb(0pt)=(0.68235,0,1);
            rgb(9pt)=(0,0.1216, 1);
            rgb(17pt)=(0, 0.69412, 1); 
            rgb(26pt)=(0, 1, 0.6863); 
            rgb(34pt)=(0, 1, 0.098); 
            rgb(43pt)=(0.557,1,0); 
            rgb(51pt)=(1, 0.8353, 0); 
            rgb(60pt)=(1, 0.2275, 0);  
            rgb(63pt)=(1,0.02745,0)},
    colorbar style={
        title={$J$ in $\frac{A}{m^2}$},     % Titel über Colorbar
        ylabel= {$\cdot e^{-3}$},           % Beschriftung seitlich, text                                                             gedreht
        samples=9,                  % Anzahl diskreter Schritte, so viele wie yticks
        width=15,                   % Breite der Colorbar (des farbigen Bereichs)
        height=220,                 % Höhe der Colorbar
        ytick={-2, -1.5, -1,..., 2},% yticks Angabe einzeln mit komma getrennt,                                               oder schrittweise mit 1,2,...,5
        point meta min=-2, %neu     % Beginn Colorbar, beachte yticks min
        point meta max=2, %neu      % Ende Colorbar, beachte yticks max
        yticklabel style={
            text width=2.5em,       % Abstand yticks zu colorbar
            align=right,            % 
        }
    }
]
\end{axis}
\end{tikzpicture}

\end{document}

私の問題と私がやりたいことを理解していただければ幸いです。

誰かが y 目盛りの値を のように変更するのを手伝ってくれるととても嬉しいです2e^{-3}

答え1

これを実現する 1 つの方法は、次のとおりです。

  1. 範囲には実際の値を使用しますmetapoint meta min=-2e-3, point meta max=2e3
  2. 目盛りラベルの全体的なスケーリングをオフにします。scaled y ticks = false
  3. パッケージを使用してティック値を解析してフォーマットしますsiunitx。これにより、数値のフォーマットを細かく制御できます。 をロードし\usepackage{siunitx}て設定します。

    yticklabel={
        \num[
            scientific-notation = fixed,
            fixed-exponent = -3,
            output-exponent-marker = \text{e},
            round-integer-to-decimal = true,
            round-mode = places,
            round-precision = 1
        ]{\tick}
    }
    

\documentclass[tikz,border={12pt,12pt}]{standalone}
\usepackage{pgfplots, siunitx}
\begin{document}

\begin{tikzpicture}
\begin{axis}[
    hide axis,
    scale only axis,                % 
    height=0pt,                     % Grafik auf größe null
    width=0pt,                      % Grafik auf größe null
    colorbar sampled,               % Diskrete Stufung
    colormap={mymap}{[1pt] rgb(0pt)=(0.68235,0,1);
            rgb(9pt)=(0,0.1216, 1);
            rgb(17pt)=(0, 0.69412, 1); 
            rgb(26pt)=(0, 1, 0.6863); 
            rgb(34pt)=(0, 1, 0.098); 
            rgb(43pt)=(0.557,1,0); 
            rgb(51pt)=(1, 0.8353, 0); 
            rgb(60pt)=(1, 0.2275, 0);  
            rgb(63pt)=(1,0.02745,0)},
    colorbar style={
        title={$J$ in $\frac{A}{m^2}$},     % Titel über Colorbar gedreht
        samples=9,                  % Anzahl diskreter Schritte, so viele wie yticks
        width=15,                   % Breite der Colorbar (des farbigen Bereichs)
        height=220,                 % Höhe der Colorbar
        %ytick={-2, -1.5, -1,..., 2},% yticks Angabe einzeln mit komma getrennt,                                               oder schrittweise mit 1,2,...,5
        point meta min=-2e-3, %neu     % Beginn Colorbar, beachte yticks min
        point meta max=2e-3, %neu      % Ende Colorbar, beachte yticks max
        scaled y ticks = false,
        yticklabel={
            \num[
                scientific-notation = fixed,
                fixed-exponent = -3,
                output-exponent-marker = \text{e},
                round-integer-to-decimal = true,
                round-mode = places,
                round-precision = 1
            ]{\tick}
        },
        yticklabel style={
            text width=4em,       % Abstand yticks zu colorbar
            align=right,            % 
        }
    }
]
\end{axis}
\end{tikzpicture}

\end{document}

答え2

PSTricks ソリューション。

e表記の場合:

\documentclass{article}

\usepackage{multido,pstricks}

\definecolor{color1}{rgb}{0.68235,0,1}
\definecolor{color2}{rgb}{0,0.1216,1}
\definecolor{color3}{rgb}{0,0.69412,1}
\definecolor{color4}{rgb}{0,1,0.6863}
\definecolor{color5}{rgb}{0,1,0.098}
\definecolor{color6}{rgb}{0.557,1,0}
\definecolor{color7}{rgb}{1,0.8353,0}
\definecolor{color8}{rgb}{1,0.2275,0}
\definecolor{color9}{rgb}{1,0.02745,0}

\begin{document}

\begin{pspicture}(-0.33,-0.15)(2.3,8.7)
  \multido{\i = 1+1}{8}{\psframe[dimen = m, fillstyle = solid, fillcolor = color\i](!0 \i\space 1 sub)(0.5,\i)}
  \multido{\iA = 0+2, \iB = -2+1}{5}{\rput[r](1.9,\iA){$\iB\mathrm{e}^{-3}$}}
  \multido{\i = 1+2, \r = -1.5+1}{4}{\rput[r](1.9,\i){$\r\mathrm{e}^{-3}$}}
  \rput(0.25,8.5){$J$ in $\frac{A}{\textup{m}^{2}}$}
\end{pspicture}

\end{document}

出力1

科学的記数法では、どちらが優れていると思いますか?

\documentclass{article}

\usepackage{multido,pstricks}

\definecolor{color1}{rgb}{0.68235,0,1}
\definecolor{color2}{rgb}{0,0.1216,1}
\definecolor{color3}{rgb}{0,0.69412,1}
\definecolor{color4}{rgb}{0,1,0.6863}
\definecolor{color5}{rgb}{0,1,0.098}
\definecolor{color6}{rgb}{0.557,1,0}
\definecolor{color7}{rgb}{1,0.8353,0}
\definecolor{color8}{rgb}{1,0.2275,0}
\definecolor{color9}{rgb}{1,0.02745,0}

\begin{document}

\begin{pspicture}(-0.33,-0.15)(2.3,8.7)
  \multido{\i = 1+1}{8}{\psframe[dimen = m, fillstyle = solid, fillcolor = color\i](!0 \i\space 1 sub)(0.5,\i)}
  \multido{\iA = 0+2, \iB = -2+1}{5}{\rput[r](2.3,\iA){$\iB \cdot 10^{-3}$}}
  \multido{\i = 1+2, \r = -1.5+1}{4}{\rput[r](2.3,\i){$\r \cdot 10^{-3}$}}
  \rput(0.25,8.5){$J$ in $\frac{A}{\textup{m}^{2}}$}
\end{pspicture}

\end{document}

出力2

関連情報