私はいわゆるアレニウスプロットpgfplotsで。基本的には、温度依存関数が1/kB*T(kBはボルツマン定数) これは今のところうまくいっていますが、例えば1600°Cはおよそ6.2 1/eV(逆数)に相当します。電子ボルト)
科学的にはそれは正しいのですが、誰もその数字に物理的な意味を与えることはできません (炉を 6.2 1/eV に設定することはできませんし、スライドが数秒しか表示されない講演では聞き手を混乱させる可能性があります)。そこで、温度を摂氏で示す 2 番目の x 軸をプロットに追加したいと思いました。座標を変換する pgfplots 機能について考えましたが、解決できません。
以下は私が試したものの MWE です。座標変換についての私の思考プロセスに何らかの間違いがあるはずですが、それがわかりません。プロットのエンドポイントは一致していますが、その間のマッピングはわずかにずれています。これを修正する方法を提案できる人はいますか?
\documentclass[tikz=true]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{mathptmx}
\usepackage{siunitx}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{semilogyaxis}[
axis x line* = top,
axis y line* = left,
xlabel={$\frac{1}{k_B \cdot T} / \si[per-mode=reciprocal]{\per\electronvolt}$},
ylabel={$k$},
]
\addplot+[x = kb, y = k] table {
kb T k
7.61876 1250 3.98E-17
7.37661 1300 1.68E-17
7.23857 1330 1.00E-17
7.14938 1350 7.09E-18
7.10560 1360 5.97E-18
7.06236 1370 5.03E-18
7.01964 1380 4.23E-18
6.97743 1390 3.56E-18
6.93573 1400 3.00E-18
6.89452 1410 2.52E-18
6.85380 1420 2.12E-18
6.83362 1425 1.95E-18
6.77379 1440 1.50E-18
6.69562 1460 1.07E-18
6.61924 1480 7.55E-19
6.54458 1500 5.35E-19
6.45359 1525 3.48E-19
6.36509 1550 2.26E-19
6.19519 1600 9.54E-20
};
\end{semilogyaxis}
% % extra x axis
\begin{semilogyaxis}[
x dir = reverse,
axis y line* = right,
axis x line* = bottom,
xlabel={$T / \si{\celsius}$},
x coord trafo/.code={\pgfmathparse{(1/(#1*8.617333262145E-05)-273.15)}},
]
\addplot+[x = T, y = k] table {
kb T k
7.61876 1250 3.98E-17
7.37661 1300 1.68E-17
7.23857 1330 1.00E-17
7.14938 1350 7.09E-18
7.10560 1360 5.97E-18
7.06236 1370 5.03E-18
7.01964 1380 4.23E-18
6.97743 1390 3.56E-18
6.93573 1400 3.00E-18
6.89452 1410 2.52E-18
6.85380 1420 2.12E-18
6.83362 1425 1.95E-18
6.77379 1440 1.50E-18
6.69562 1460 1.07E-18
6.61924 1480 7.55E-19
6.54458 1500 5.35E-19
6.45359 1525 3.48E-19
6.36509 1550 2.26E-19
6.19519 1600 9.54E-20
};
\end{semilogyaxis}
%
\end{tikzpicture}
\end{document}
この表はダミーデータであり、T が指定され、kB は 1/kB*T から計算され、k はアルレニウスの式から計算された虚数速度定数です。
答え1
100%あなたが探しているものではないが、少なくともそれは私が知るそうです。ここからは自分で必要な修正を行うことができると思います。
% used PGFPlots v1.16
\documentclass[border=5pt]{standalone}
\usepackage{xfp} % <-- needed for accuracy
\usepackage{siunitx}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.16}
\pgfplotstableread{
kb T k
7.61876 1250 3.98E-17
7.37661 1300 1.68E-17
7.23857 1330 1.00E-17
7.14938 1350 7.09E-18
7.10560 1360 5.97E-18
7.06236 1370 5.03E-18
7.01964 1380 4.23E-18
6.97743 1390 3.56E-18
6.93573 1400 3.00E-18
6.89452 1410 2.52E-18
6.85380 1420 2.12E-18
6.83362 1425 1.95E-18
6.77379 1440 1.50E-18
6.69562 1460 1.07E-18
6.61924 1480 7.55E-19
6.54458 1500 5.35E-19
6.45359 1525 3.48E-19
6.36509 1550 2.26E-19
6.19519 1600 9.54E-20
}{\data}
\begin{document}
\begin{tikzpicture}
\begin{semilogyaxis}[
axis lines*=left,
xlabel={$\frac{\SI{1000}{\kelvin}}{T}$},
ylabel={$k$},
]
% please note that table options have to be given *after* the
% table keyword. Otherwise they will not be applied
\addplot table [
x expr={1000/\thisrow{T}},
y=k,
] {\data};
\end{semilogyaxis}
% extra x axis
\begin{semilogyaxis}[
axis lines*=right,
xlabel={$T / \si{\kelvin}$},
% avoid scaling (to avoid unexpected result)
scaled ticks=false,
% state values which should be shown on axis
xtick={1250,1300,1350,1400,1500,1600},
% perform coordinate transformation
% to ensure right results (accuracy), use the `\fpeval` command
% from the `xfp` package
% (compare results when not using it. This will be way off for high T)
x coord trafo/.code={\pgfmathparse{\fpeval{1/(#1)}}},
x coord inv trafo/.code={\pgfmathparse{\fpeval{1/(#1)}}},
]
\addplot+ [red] table [
x=T,
y=k,
] {\data};
\end{semilogyaxis}
\end{tikzpicture}
\end{document}