有时 的轮廓标签的自动放置pgfplots
并不令人满意。例如,考虑手册中的这个例子(略有改动),
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat = 1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=-2:2,view={0}{90}]
\addplot3[contour gnuplot={number=14,label distance=10000pt},thick]
{exp(0-x^2-y^2)*x};
\end{axis}
\end{tikzpicture}
\end{document}
这使
现在我简单地将 x 轴的上限改为 -0.75,
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat = 1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=-2:2,view={0}{90},xmax=-0.75]
\addplot3[contour gnuplot={number=14,label distance=10000pt},thick]
{exp(0-x^2-y^2)*x};
\end{axis}
\end{tikzpicture}
\end{document}
我明白了
现在轮廓标签位置与右侧 y 轴重合,因此不可见。当然,我可以增加xmax
和/或降低的值label distance
以获得更多标签。但是,在我的实际问题(不是上面的 MWE)中,我无法增加xmax
(它代表独立变量的最大值),而且我认为一般来说,较少数量的标签看起来更好。在我看来,在这种情况下,如果标签被放置在
- 沿 y=0 或
- 沿着线 (-1,1.6) -- (-0.75,0)。
这让我想到了我的问题:我可以手动指定轮廓标签的位置吗?如果可以,如何指定?
(当用来生成轮廓时这可能看起来很疯狂gnuplot
,但一般来说我使用我自己的工具和选项contour prepared
,所以我可以很容易地计算标签的位置。角度也应该是可能的,尽管对于分辨率较差的轮廓水平来说可能更具挑战性。)
答案1
由于没有人发布答案或评论,我想我应该简要概述一下我开发的解决方法。虽然解决方法不是自动化的,但也许对某些人有用。
正如我在问题结尾提到的,我修改了我的代码以提取等值线,这样它也可以写出标签。为简单起见,我假设它们位于一条或多条直线和等值线的交点处。修改后的代码会写出一个以标签为节点的文件,即
\node[align=center,fill=white,inner sep=1pt,font=\tiny,rotate= 46.3] at (axis cs: 0.132129E+01,-0.914058E+00) {0.1};
然后我input
使用命令将其放入文件中TikZ/pgfplots
。可以根据等值线与直线和标签相交处的斜率自动计算角度。
对于手册中的示例函数pgfplots
,结果如下:
在我看来,这看起来比通过 自动放置标签更好pgfplots
,但它更具交互性,并且需要使用contour prepared
选项。缺少的一件事是轮廓标签的颜色与轮廓本身的颜色相匹配……