使用 matlab2tikz 导入 Matlab 图形时出现刻度和标题问题

使用 matlab2tikz 导入 Matlab 图形时出现刻度和标题问题

我在 Matlab 中创建了一个漂亮的图,并使用 matlab2tikz 库将其转换为 tikz。它运行良好,但有两个问题:

  1. 轴的刻度不好。特别是对于 y 轴,应该有更多的刻度,并且在 -16 和 5(在边界处)以及 -6(中间)处有一个刻度。对于轴等距图(下面最后一个图),x 轴和 y 轴的刻度数应该相同。
  2. 标题似乎没有居中。

这两个问题该如何解决呢?

首先,让我展示一下 Matlab 代码:

set(0,'DefaultTextInterpreter','latex');
h = figure('outerposition', [0 0 1920 1080]);
set(h, 'Units', 'centimeters');
hold on

plot([5,5],[-16,4],':k');
plot([-5,15],[-6,-6],':k');

a = 0:pi/100:2*pi;
b = sin(a);
plot(a,b)

hold off
xlim([-5,15]);
ylim([-16,4]);
NumTicks = 11;
L = get(gca,'XLim');
set(gca,'XTick',linspace(L(1),L(2),NumTicks))
set(gca, 'FontSize', 24, 'fontname', 'times');
xlabel('x', 'Interpreter','latex', 'fontsize', 24);
ylabel('y', 'Interpreter','latex', 'fontsize', 24);
title('This is a Test', 'Interpreter','latex', 'fontsize', 24);
box on

% Export to tikz
cleanfigure;
matlab2tikz('test.tikz', 'height', '\figureheight', 'width', '\figurewidth', 'showInfo', false);

导出为 .png 后,图表如下所示:

在此处输入图片描述

现在我通过以下方式将 test.tikz 包含到 LaTeX 文档中:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{plotmarks}
\usepackage{grffile}
\usepackage{amsmath}
\pgfplotsset{plot coordinates/math parser=false}
\newlength\figureheight
\newlength\figurewidth 

\begin{document}
\begin{figure}
    \centering
    \setlength\figureheight{6cm} 
    \setlength\figurewidth{10.6667cm}
    \input{test.tikz}
    \caption{This is my caption}
    \label{fig:sphere}
\end{figure}
\end{document} 

输出如下:

在此处输入图片描述

可以看出,尤其是 y 轴的刻度位置错误(-16、-6 和 4 处没有刻度)并且刻度太少。

当我使用\setlength\figurewidth{6cm},即方形(轴相等)图时,输出如下:

在此处输入图片描述

对于这种类型,我希望两个轴的刻度数相同。

答案1

matlab2tikz可以通过编辑以下内容的调用来解决这两个问题:

matlab2tikz('test.tikz', 'height', ...
    '\figureheight', 'width', '\figurewidth', ...
    'showInfo', false,...
    'extraaxisoptions','ytick={-16,-14,...,4}', ...
    'extratikzpictureoptions','trim axis left,trim axis right'...
    );

除了,您还可以像一样extraaxisoptions明确设置 y 刻度,例如。问题是,如果没有另行说明,会自行确定刻度位置。xticksset(gca,'YTick',linspace(-16,4,NumTicks))pgfplots

至于标题,它位于图像的中心,您必须考虑到,就 LaTeX 而言,它只看到一个框,它将其居中。该框不仅包含轴,还包含 yticks 和 ylabel。extratikzpictureoptions上面显示的将设置边界框,tikzpicture以便不考虑轴边界左侧或右侧的任何内容。这样,标题将相对于轴居中,但另一方面,整个图表将稍微向左偏移。

答案2

我也遇到过类似的问题。但是,解决方案Torbjørn T.不是自动的。也就是说,它需要数据范围的信息。

为了使事情自动化,请\pgfplotsset{try min ticks=6}在文档序言中使用。用6你喜欢的刻度数替换。

引自这里

相关内容