如何使用 matlab2tikz 手动指定颜色条的刻度

如何使用 matlab2tikz 手动指定颜色条的刻度

我有一个 matlab 脚本,它创建了一些复合图。当我使用 导出图形时matlab2tikz,颜色条的手动刻度会丢失。即使我尝试extraAxisOptions手动执行此操作,matlab2tikz也会将其颜色条代码插入我的 之后extraAxisOptions,因此我的设置会被覆盖。

如何为颜色条设置手动刻度?

下面是 matlab 和 latex 代码作为示例。下面是两张图片,展示了我的问题。虽然 matlab 遵循我对颜色条的手动标记,但这些标记在翻译中丢失了。latex 的输出使用颜色条的默认标记。

figure(1)
hold off
plot(0:0.1:pi/2,sin(0:0.1:pi/2),'b')
hold on
grid on
plot(0:0.1:pi/2,cos(0:0.1:pi/2),'r')

hcb=colorbar('location','NorthOutside')
set(hcb,'XTick',[20,30,40,50])
xlabel(hcb, 'Water flow rate in L/min')


matlab2tikz('foo.tikz',...
    'extraAxisOptions',{'colorbar style={xtick={20,30,40,50}}'})

这是乳胶代码:

\documentclass[tikz]{standalone}
\usepackage{tikz,pgfplots,pgfkeys}
\pgfplotsset{compat=newest}

\begin{document}

\input{foo.tikz}

\end{document}

结果是 matlab图

和乳胶输出 在此处输入图片描述


生成的 tikz 代码的相关部分如下所示:

\begin{tikzpicture}
\begin{axis}[%
ymajorgrids,
colorbar style={xtick={20,30,40,50}},
colormap/jet,
colorbar horizontal,
colorbar style={at={(0.5,1.03)},anchor=south,xticklabel pos=upper,xlabel={Water flow rate in L/min}},
point meta min=0,
point meta max=1
]

答案1

看起来(至少对我而言)matlab2tikz这里做的事情不太正确,因此我无论如何建议您在 GitHub 上发布问题。


也就是说,要修复pgfplots代码,您需要做两处更改:

  1. colorbar horizontal正如您已经提到的那样,将颜色条的 xtick 设置移至键之后。

  2. 更改point meta max为 64(也许,不太清楚 Matlab 使用了什么,但看起来很相似)

point meta max定义颜色条的最大值,从图像中您可以看到,在版本中它是 1 pgfplots,在 Matlab 中它是其他值。

在此处输入图片描述

\documentclass[tikz,border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}
\begin{axis}[%
ymajorgrids,
colormap/jet,
colorbar horizontal,
colorbar style={at={(0.5,1.03)},anchor=south,xticklabel pos=upper,xlabel={Water flow rate in L/min}},
colorbar style={xtick={20,30,40,50}}, % this was moved down
point meta min=0,
point meta max=64, % change from 1  
% the following line is just for this example, so remove it for your own code
xmin=0,xmax=1.5,samples at={0,0.25,...,1.5},xtick={0,0.5,1,1.5}
]

\addplot {rnd};
\addplot {rnd};
\end{axis}
\end{tikzpicture}
\end{document}

相关内容