对数开尔文色条

对数开尔文色条

正如标题所说,我想制作一个垂直彩条,以对数刻度显示开尔文温度,右侧有常规刻度,左侧有一些自定义刻度(即底部为绝对零度,冰的熔点为 273)。

我让基本颜色条正常工作,但刻度从 1 到 -1,而不是从 10^9 到 -10^9。我也不知道如何在另一侧添加自定义刻度。

梅威瑟:

\documentclass{article}   

\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[scale only axis, hide axis, height=0em, width=0em, colormap/jet,
    colorbar horizontal, point meta min=-1000000000, point meta max=1000000000,
    colorbar style={width=.8\textheight, rotate=90, % xtick={1000000000,100000000,...,-1000000000}, % This gives me 'Dimesion too large' errors
    }]
    \addplot [draw=none] coordinates {(0,0)};
  \end{axis}
\end{tikzpicture}
\end{document}

<code>在此处输入图片描述</code>

答案1

我承认我有几个问题可能表明我没有理解/考虑过你的问题(例如,你想如何在对数刻度上显示 -1*10^9?或者你的意思是 10^-9?你真的是指对数刻度还是你只是想要“大数字”?为什么你使用colorbar horizontal90 度旋转?)。无论如何,我倾向于不去思考这些问题,而是给你一些提示,这些提示(希望)能帮助你自己解决剩下的问题:

\documentclass{standalone}   

\usepackage{pgfplots}

\pgfplotsset{compat=1.12}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    scale only axis,
    hide axis, 
    colormap/jet,
    colorbar, 
    point meta min=-1000000000, point meta max=1000000000,
    colorbar style={
        scaled ticks=false,
        extra y ticks={-1e9,1e9},
        extra y tick labels={$0$,Warm},
        extra y tick style={
            yticklabel pos=left,
            red,
        },
        %ymode=log,
        %ytick={-1e9,-1e8,-1e7},
    }]
  \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

  1. 如果您想要对数轴,请使用ymode=log。这不会影响阴影,只会影响标签在其上的绘制方式。请注意,这不适用于负值(自然),您还需要采用point meta min

  2. ytick 仍然原生使用 PGF,但不幸的是,它不支持大数字。这是 pgfplots 的一个弱点,最终会得到解决。目前,您必须手动扩展“...”以处理大数字。

  3. 您的图像没有显示 -1 ... 1;它显示 -1 *10^9 ... +1 *10^9 (参见tick scale label底部的小图。用于scaled ticks=false禁用刻度缩放。

  4. 可以使用extra y ticks及其变体添加额外的刻度。该示例应该会为您提供一些文档指导。

  5. 考虑\pgfplotsset{compat=1.12}在序言中使用或更新。在这种情况下,它会缩小图形的边界框。这个键通常是一种很好的做法。

相关内容