如何以軸為單位設定長條圖的寬度

如何以軸為單位設定長條圖的寬度

我想將以下數據繪製為條形圖,其中每個條形的寬度為 784.7913898303067(以軸為單位):

-8907.243859923638 2.178160631669683e-06
-8122.452470093331 8.712642526678732e-06
-7337.661080263024 4.356321263339366e-06
-6552.869690432717 1.0890803158348416e-05
-5768.07830060241 1.7425285053357465e-05
-4983.2869107721035 1.9603445685027148e-05
-4198.495520941797 3.9206891370054296e-05
-3413.70413111149 6.752297958176017e-05
-2628.912741281183 0.00012415515600517195
-1844.1213514508763 0.00015900572611188686
-1059.3299616205695 0.00018949997495526245
-274.53857179026284 0.00020039077811361084
510.25281804004385 0.00016989652927023528
1295.0442078703504 0.00011326435284682353
2079.835597700657 7.62356221084389e-05
2864.626987530964 3.267240947504525e-05
3649.418377361271 1.5247124421687783e-05
4434.209767191577 4.356321263339366e-06
5219.001157021884 4.356321263339366e-06
6003.792546852191 1.0890803158348416e-05
6788.583936682498 0.0
7573.375326512804 4.356321263339366e-06
8358.16671634311 0.0
9142.958106173417 0.0

我在做:

\begin{tikzpicture}
        \begin{axis}
        [
        width=\linewidth,
        title = {Late Speed Distribution},
        xlabel = {$v$~[m/s]},
        ylabel = {Probability Density},
        ]
        \addplot[ybar, white!45!blue, fill = white!45!blue,bar width=784.7913898303067] table {barSpeeds.txt};
        \addplot[thick, red, domain=-10500:10500, samples=100]  {0.00016312130913239263 * exp(-8.359326130920716e-08*x*x)} node[black, pos = 0, anchor=south west]{$P(v_x) = \sqrt{\frac{m}{2\pi K_B T}}\exp\left(-\frac{1}{2}\frac{mv_x^2}{K_BT}\right)$};
        \end{axis}

但是,我猜,條形寬度參數適用於其他一些單位。我已經設法通過在軸環境之前使用它來使其工作\pgfplotsset{compat=1.8},但由於某些其他原因,這使我的整個圖形向下移動,並且最終與我旁邊的另一個圖形不一致。

編輯: 使用\pgfplotsset{compat=1.8}部分解決了問題。它允許我以軸為單位設定寬度。但由於某種原因(為什麼?)它改變了我的圖像的位置,並且不再對齊。

\documentclass[11pt]{article}
\usepackage[top=2.54cm, bottom=2.54cm, left=2.75cm, right=2.75cm]{geometry}
\usepackage{float}
\usepackage{subcaption}
\usepackage{pgfplots}
\usepackage{amsmath}
\begin{filecontents*}{barSpeeds2.txt}
    -8907.243859923638 2.178160631669683e-06
    -8122.452470093331 8.712642526678732e-06
    -7337.661080263024 4.356321263339366e-06
    -6552.869690432717 1.0890803158348416e-05
    -5768.07830060241 1.7425285053357465e-05
    -4983.2869107721035 1.9603445685027148e-05
    -4198.495520941797 3.9206891370054296e-05
    -3413.70413111149 6.752297958176017e-05
    -2628.912741281183 0.00012415515600517195
    -1844.1213514508763 0.00015900572611188686
    -1059.3299616205695 0.00018949997495526245
    -274.53857179026284 0.00020039077811361084
    510.25281804004385 0.00016989652927023528
    1295.0442078703504 0.00011326435284682353
    2079.835597700657 7.62356221084389e-05
    2864.626987530964 3.267240947504525e-05
    3649.418377361271 1.5247124421687783e-05
    4434.209767191577 4.356321263339366e-06
    5219.001157021884 4.356321263339366e-06
    6003.792546852191 1.0890803158348416e-05
    6788.583936682498 0.0
    7573.375326512804 4.356321263339366e-06
    8358.16671634311 0.0
    9142.958106173417 0.0
\end{filecontents*}
\begin{filecontents*}{radialT2.txt}
    x   y   z
    0   724.6251253 27.23673321
    0.00011625  519.0500608 21.50619688
    0.0002325   471.8535621 20.0953379
    0.00034875  458.3159477 20.51917732
    0.000465    378.1946348 15.32643944
    0.00058125  402.6761363 16.59979084
    0.0006975   330.7735982 12.35631702
    0.00081375  483.4846951 17.4573978
    0.00093 879.0654654 17.75191929
\end{filecontents*}
\begin{document} 
    \begin{figure}[H]
        \begin{subfigure}[b]{0.49\textwidth}
            \centering
            \begin{tikzpicture}
            \pgfplotsset{compat=1.16}
            \begin{axis}
            [
            width=\linewidth,
            title = {Late Speed Distribution},
            xlabel = {$v$~[m/s]},
            ylabel = {Probability Density},
            ]
            \addplot[ybar, white!45!blue, fill = white!45!blue,bar width=784.7913898303067] table {barSpeeds2.txt};
            \addplot[thick, red, domain=-10500:10500, samples=100]  {0.00016312130913239263 * exp(-8.359326130920716e-08*x*x)} node[black, pos = 1, anchor=south west]{$P(v_x) = \sqrt{\frac{m}{2\pi K_B T}}\exp\left(-\frac{1}{2}\frac{mv_x^2}{K_BT}\right)$};
            \end{axis}
            \end{tikzpicture}
            \label{fig:tempProbab}
        \end{subfigure}
        \begin{subfigure}[b]{0.49\textwidth}
            \centering
            \begin{tikzpicture}
            \begin{axis}
            [
            width=\linewidth,
            title = {Temperature Radial Distribution},
            xlabel = $r~\text{[m]}$,
            ylabel = {Temperature~[K]},
            ]
            \addplot [blue,dashed,thick]
            plot [error bars/.cd, y dir = both, y explicit]
            table[y error index=2]{radialT2.txt};
            \end{axis}
            \end{tikzpicture}
            \label{fig:radialTemp}
        \end{subfigure}
        \caption{(a) . (b) .}
    \end{figure}
\end{document}

這就是它目前的樣子: 有什麼方法可以在圖中自動設定方程,使其不與圖形重疊?

謝謝 圖形

答案1

我可能不明白這個問題,但是一旦我將您的片段完成到文件中,我就得到了我認為期望的版本結果1.171.151.16產生相同的結果,我沒有測試的其他版本)。

\documentclass{article}
\begin{filecontents*}{barSpeeds.txt}
-8907.243859923638 2.178160631669683e-06
-8122.452470093331 8.712642526678732e-06
-7337.661080263024 4.356321263339366e-06
-6552.869690432717 1.0890803158348416e-05
-5768.07830060241 1.7425285053357465e-05
-4983.2869107721035 1.9603445685027148e-05
-4198.495520941797 3.9206891370054296e-05
-3413.70413111149 6.752297958176017e-05
-2628.912741281183 0.00012415515600517195
-1844.1213514508763 0.00015900572611188686
-1059.3299616205695 0.00018949997495526245
-274.53857179026284 0.00020039077811361084
510.25281804004385 0.00016989652927023528
1295.0442078703504 0.00011326435284682353
2079.835597700657 7.62356221084389e-05
2864.626987530964 3.267240947504525e-05
3649.418377361271 1.5247124421687783e-05
4434.209767191577 4.356321263339366e-06
5219.001157021884 4.356321263339366e-06
6003.792546852191 1.0890803158348416e-05
6788.583936682498 0.0
7573.375326512804 4.356321263339366e-06
8358.16671634311 0.0
9142.958106173417 0.0
\end{filecontents*}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{tikzpicture}
    \begin{axis}
        [
        width=0.9\linewidth,
        title = {Late Speed Distribution},
        xlabel = {$v$~[m/s]},
        ylabel = {Probability Density},
        ]
        \addplot[ybar, white!45!blue, fill = white!45!blue,bar width=784.7913898303067] table {barSpeeds.txt};
        \addplot[thick, red, domain=-10500:10500, samples=100]  {0.00016312130913239263 * exp(-8.359326130920716e-08*x*x)} node[black, pos = 0, anchor=south west]{$P(v_x) = \sqrt{\frac{m}{2\pi K_B T}}\exp\left(-\frac{1}{2}\frac{mv_x^2}{K_BT}\right)$};
    \end{axis}
\end{tikzpicture}
\end{document}

在此輸入影像描述

如果這不能回答問題,它至少可以幫助定義它。

至於更新的問題:一旦添加子圖標題,主要問題就會消失,恕我直言,無論如何您都應該這樣做。至於公式的可見性:據我所知,沒有什麼神奇的技巧。我添加了兩種臨時可能性:contour和增加ymax.

\documentclass[11pt]{article}
\usepackage[top=2.54cm, bottom=2.54cm, left=2.75cm, right=2.75cm]{geometry}
\usepackage{float}
\usepackage{subcaption}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\usepackage[outline]{contour}
\contourlength{0.6pt}
\usepackage{amsmath}
\begin{filecontents*}{barSpeeds2.txt}
    -8907.243859923638 2.178160631669683e-06
    -8122.452470093331 8.712642526678732e-06
    -7337.661080263024 4.356321263339366e-06
    -6552.869690432717 1.0890803158348416e-05
    -5768.07830060241 1.7425285053357465e-05
    -4983.2869107721035 1.9603445685027148e-05
    -4198.495520941797 3.9206891370054296e-05
    -3413.70413111149 6.752297958176017e-05
    -2628.912741281183 0.00012415515600517195
    -1844.1213514508763 0.00015900572611188686
    -1059.3299616205695 0.00018949997495526245
    -274.53857179026284 0.00020039077811361084
    510.25281804004385 0.00016989652927023528
    1295.0442078703504 0.00011326435284682353
    2079.835597700657 7.62356221084389e-05
    2864.626987530964 3.267240947504525e-05
    3649.418377361271 1.5247124421687783e-05
    4434.209767191577 4.356321263339366e-06
    5219.001157021884 4.356321263339366e-06
    6003.792546852191 1.0890803158348416e-05
    6788.583936682498 0.0
    7573.375326512804 4.356321263339366e-06
    8358.16671634311 0.0
    9142.958106173417 0.0
\end{filecontents*}
\begin{filecontents*}{radialT2.txt}
    x   y   z
    0   724.6251253 27.23673321
    0.00011625  519.0500608 21.50619688
    0.0002325   471.8535621 20.0953379
    0.00034875  458.3159477 20.51917732
    0.000465    378.1946348 15.32643944
    0.00058125  402.6761363 16.59979084
    0.0006975   330.7735982 12.35631702
    0.00081375  483.4846951 17.4573978
    0.00093 879.0654654 17.75191929
\end{filecontents*}
\begin{document} 
    \begin{figure}[H]
        \begin{subfigure}[b]{0.49\textwidth}
            \centering
            \begin{tikzpicture}
            \pgfplotsset{compat=1.16}
            \begin{axis}
            [
            width=\linewidth,
            title = {Late Speed Distribution},
            xlabel = {$v$~[m/s]},
            ylabel = {Probability Density},
            ]
            \addplot[ybar, white!45!blue, fill = white!45!blue,bar width=784.7913898303067] table {barSpeeds2.txt};
            \addplot[thick, red, domain=-10500:10500, samples=100]  
            {0.00016312130913239263 * exp(-8.359326130920716e-08*x*x)} 
            node[black, pos = 0.5, anchor=south]{\contour{white}{$P(v_x) =
            \sqrt{\frac{m}{2\pi\, k_\mathrm{B}\,
            T}}\exp\left(-\frac{1}{2}\frac{m\,v_x^2}{k_\mathrm{B}\,T}\right)$}};
            \end{axis}
            \end{tikzpicture}
            \caption{}
           \label{fig:tempProbab-2}
        \end{subfigure}
        \begin{subfigure}[b]{0.49\textwidth}
            \centering
            \begin{tikzpicture}
            \begin{axis}
            [
            width=\linewidth,
            title = {Temperature Radial Distribution},
            xlabel = $r~\text{[m]}$,
            ylabel = {Temperature~[K]},
            ]
            \addplot [blue,dashed,thick]
            plot [error bars/.cd, y dir = both, y explicit]
            table[y error index=2]{radialT2.txt};
            \end{axis}
            \end{tikzpicture}
            \caption{}
            \label{fig:radialTemp-2}
        \end{subfigure}
        \caption{Using \texttt{contour}.}
    \end{figure}

    \begin{figure}[h]
        \begin{subfigure}[b]{0.49\textwidth}
            \centering
            \begin{tikzpicture}
            \pgfplotsset{compat=1.16}
            \begin{axis}
            [
            width=\linewidth,
            title = {Late Speed Distribution},
            xlabel = {$v$~[m/s]},
            ylabel = {Probability Density},
            ymax=2.6e-4
            ]
            \addplot[ybar, white!45!blue, fill = white!45!blue,bar width=784.7913898303067] table {barSpeeds2.txt};
            \addplot[thick, red, domain=-10500:10500, samples=100]  
            {0.00016312130913239263 * exp(-8.359326130920716e-08*x*x)} 
            node[black, pos = 0.5, anchor=south,yshift=5mm]{$P(v_x) =
            \sqrt{\frac{m}{2\pi\, k_\mathrm{B}\,
            T}}\exp\left(-\frac{1}{2}\frac{m\,v_x^2}{k_\mathrm{B}\,T}\right)$};
            \end{axis}
            \end{tikzpicture}
            \caption{}
           \label{fig:tempProbab}
        \end{subfigure}
        \begin{subfigure}[b]{0.49\textwidth}
            \centering
            \begin{tikzpicture}
            \begin{axis}
            [
            width=\linewidth,
            title = {Temperature Radial Distribution},
            xlabel = $r~\text{[m]}$,
            ylabel = {Temperature~[K]},
            ]
            \addplot [blue,dashed,thick]
            plot [error bars/.cd, y dir = both, y explicit]
            table[y error index=2]{radialT2.txt};
            \end{axis}
            \end{tikzpicture}
            \caption{}
            \label{fig:radialTemp}
        \end{subfigure}
        \caption{Increasing \texttt{ymax} and shifting the node.}
    \end{figure}
\end{document}

在此輸入影像描述

在此輸入影像描述

相關內容