我有一个 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}
生成的 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
代码,您需要做两处更改:
colorbar horizontal
正如您已经提到的那样,将颜色条的 xtick 设置移至键之后。更改
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}