图片缩略图

matlab2tikz / matlab2tikz

版本1.0.0.0 (203 KB) 尼科Schlomer
一个脚本转换MATLAB/Octave到TikZ数字,方便和一致的包含到LaTeX。

496下载

更新2020年5月9日

GitHub在GitHub上查看许可证

编者按:受欢迎的文件2013201520162018

这是matlab2tikz,一个MATLAB(R)脚本,用于将MATLAB图形转换为本地TikZ/Pgfplots图形。
matlab2tikz支万博1manbetx持大多数MATLAB图形的转换,包括2D和3D图。对于使用第三方软件包构建的地块,您的里程可能会有所不同。
流程如下:

a.将matlab2tikz脚本(src/文件夹的内容)放在MATLAB可以找到的目录中(例如当前目录)。b.确保您的LaTeX安装包括软件包

TikZ(又名PGF, >=2.00)和
Pgfplots(> = 1.3)。
在MATLAB中生成你的图。

调用matlab2tikz by
' ' '
> > matlab2tikz ();
' ' '

' ' '
> > matlab2tikz(“myfile.tex”);
' ' '
脚本接受许多选项;通过调用帮助来检查它们,
' ' '
>>帮助matlab2tikz
' ' '
有时,MATLAB通过保持周围不可见的对象或将图扩展到超出边界框太远,使得难以创建匹配的LaTeX图。使用
' ' '
> > cleanfigure;
> > matlab2tikz(“myfile.tex”);
' ' '
首先清除图形中不需要的实体,然后将其转换为TeX。

将' myfile.tex '的内容添加到您的LaTeX源代码中;一个方便的方法是使用' \input{/path/to/myfile.tex} '。同时确保在你的文档头包含Pgfplots包:
' ' '
\ documentclass{}条
\ usepackage {pgfplots}
%和可选的(从Pgfplots 1.3开始):
最新\ pgfplotsset{兼容=}
\pgfplotsset{绘图坐标/数学解析器=false}
\ newlength \ figureheight
\ newlength \ figurewidth
开始\{文档}
输入\ {myfile.tex}
结束\{文档}
' ' '
报告了与以下LaTeX包不兼容的问题:

signalflowdiagramhttp://www.texample.net/tikz/examples/signal-flow-building-blocks/(查看http://sourceforge.net/tracker/?func=detail&aid=3312653&group_id=224188&atid=1060656)。
如果你遇到错误,有什么matlab2tikz可以做的很好的例子,或者如果你只是寻找更多信息,请访问matlab2tikz的网页https://github.com/matlab2tikz/matlab2tikz

引用作为

Nico Schlömer(2020)。matlab2tikz / matlab2tikzGitHub (https://www.github.com/matlab2tikz/matlab2tikz)。检索

意见及评分(360

嗨!抱歉这招对我没用…我有这些错误:
未识别的函数或变量'getEnvironment'。

错误在matlab2tikz> checkdeprecedenvironment(行6728)
[env, envVersion] = getenvirenvironment ();

matlab2tikz错误(第144行)
checkDeprecatedEnvironment (minimalVersion);

010101

你好。datetime问题是否有可能很快得到解决?这个问题似乎已经悬而未决很长时间了。

010101

是否可以默认使用公制单位而不是英寸?我的意思是:
开始\[%{轴}
宽= 4.521,
身高= 3.566,
在= {(0.758,0.481)},
仅限刻度轴,…

非常感谢你的努力!!

Funciono perfectamente。

很好,但是yyaxis还不支持万博1manbetx

M Zagorowska

非常有用,但出于未知的原因将部分标签/图例保存为文本(或者可能只是我)。

哇,这东西太有用了!在我发现这个脚本之前,我一直在使用经典的\includegraphics{saved graph}。谢谢你!

非常感谢。

它很棒,工作完美。有一个问题我解决不了:它不能绘制多曲面图的交集。你有解决这个问题的办法吗?

杰克

这已经工作了很长一段时间了,不幸的是它已经停止工作,它不会打开文件,我在535行得到一个错误fid=fileOpenForWrite…

这发生的非常随机,没有任何警告,现在是不可用的-有什么解决方案吗?

非常有用的函数集。不可替代的。

就一个问题。为什么选择“extracolors”?

问候,

rotton

伟大的东西。
然而,我可能会给出一些建设性的反馈:
-你的m2tInputParser不能正确理解函数调用matlab2tikz('filehandle',fid)并发出警告。建议使用matlab的inputParser。
为什么图例是自动创建的?有什么办法可以避免这种情况吗?

Creatlee

@Ondrej:这是安装LaTeX的典型障碍。建议保留注释过的那行,而是安装cm-super包,它提供了计算机现代字体的矢量化版本,以供国际使用https://tex.stackexchange.com/questions/1291/why-are-bitmap-fonts-used-automatically以获取更多信息)。

Ondrej

我已经克服了这种行为……当你注释"\usepackage[T1]{fontenc}"时。所有标签都是向量化的。

Ondrej

你好,
谢谢你这么方便好用的工具!有人知道如何修复一个问题与光栅/向量化字体在编译pdf文件?我使用最新版本的matlab2tikz, MATLAB2016b和更新版本的MiKTeX发行版(使用pdflatex编译)。即使在一个图中,y轴标签打印为向量化字体,但x轴标记为位图式字体。当pdf被放大时,这将导致像素化标签。

你能帮我吗?谢谢。

谢谢你这么好的工具。

我刚刚发现了一个特殊数据的错误:如果线形图中的x轴只包含整数,而y轴是另一种数据类型(在我的例子中是小数量的double类型),y轴的所有值都被转换为x数据类型。在我的例子中,所有的y值都被设为0。我刚刚通过将所有数字数据转换为double类型(在“matlab2tikz”中的1820,1821,2824,1825行中)实现了一个快速而肮脏的修复。在函数“getXYZDataFromLine”中输入m,如下所示:

试一试
xData = double(get(h, ' xData '));
yData = double(get(h, ' yData '));

%行注释
xData = double(get(h, 'X'));
yData = double(get(h, 'Y'));
结束

也许,有些人也有同样的问题。霍普,这能帮上忙。

将图形保存为Tikz代码而不是LaTeX的eps文件的一个非常好的优点是可适应的长宽比。

阮见鬼

非常好的工具,非常感谢!我目前正在使用m2t为出版物生成漂亮的数字。不幸的是,在图形中添加箭头似乎相当困难。不知何故,我设法实现了一个小变通,这似乎对我很管用。

首先,编写一个函数,绘制数据坐标系定义的注释箭头,并将其固定在当前轴上。可以在这里找到:https://de.mathworks.com/matlabcentral/fileexchange/65769-drawarrow-x-y-varargin-
matlab2tikz内部。m文件,然后我添加了“案件'箭头形状' -> [m2t, str] = handleObject(m2t, child, @ drawrow);”到函数handleAllChildren。在drawrow函数中,我将“arrowSpec = '{Stealth}-{Stealth}';”改为“arrowSpec = '{Stealth "}-{Stealth "}';”。
另外,忽略了散点图标记的指定线宽。在函数drawScatterPlot中添加"[m2t, lineOptions] = getLineOptions(m2t, h);"和"drawOptions = lineOptions;"似乎可以解决这个问题。

因为我真的不是一个专业的程序员,这些调整肯定不会以最佳的方式实现。尽管如此,也许它可以帮助作者进一步改进这个非常有用的工具。

非常好的工具,非常感谢

一个有用的软件包,写得很好。选项“MarkerIndices”是否支持Matlab线对象万博1manbetx?

我已经通过主文件看了一下,看起来你的假设是,如果指定了'none'以外的标记样式,那么属于一行的每个数据点都将有一个标记。如果可能的话,您是否可以添加对“MarkerIndic万博1manbetxies”选项的支持?我认为这可以插入到'getMarkerOptions'功能。那么你只需要为每条直线创建两个tikz图。一个包含不具有标记的完整数据集,另一个用于具有标记选项的采样数据集。这可能需要在'drawLine'函数中做一些修改,以定义两个单独的绘制选项。

研究的必须品。

Kai Teschner

对写论文很有用

伟大的工具。

我可以问一个简单的问题吗?我不知道如何防止生成图例时,Matlab绘图没有。兆瓦:

plot(x, y) %无图例
matlab2tikz(文件名);%有图例

另外,我有一个面积图,我添加线形图。不幸的是,这些线没有添加到输出图中。有解决办法吗?

提前谢谢!

非常有用的代码!谢谢你!

太棒了!

康里贝罗

神奇的代码。谢谢你!

最后使这成为一个正式的Matlab函数。这样它就得到了官方的支持,并且可以立即交付修复。万博1manbetx例如,它不支持yyaxis函数,这是非常恼人的万博1manbetx。

在使用这段(很棒的)代码时,我遇到了一个小问题。当x轴是标签时,输入from:

集(gca, xticklabels,{'这个\ \ ','标签字符\ \ '})

pgfplot文件需要如下一行:

xticklabel风格={}=中心对齐,

使用换行符编译xticklabels(如果标签不包含换行符,则编译正常)。Matlab2tikz似乎没有自动添加所需的行。谢谢你的辛勤工作!

你好,

从2016年开始matlab2ti万博1manbetxkz是否支持保存使用极坐标函数绘制的数字?

我可以保存使用'polar'函数绘制的数字,但不能保存'polarplot'。

谢谢,

艾伦

@Edward Kolanko:谢谢你的赞美。我认为,通过在MATLAB图中添加一个空轴,应该可以生成一个“空”输出文档。然而,我真的很好奇你为什么会问:你有什么特别的追求吗?毕竟:没有内容的情节就像没有啤酒的酒吧;-)

这真是太好了。我爱上了第一张图。

我想知道是否可以在图中不绘图的情况下生成特克斯码。

了不起的工作!作品完美!

玛丽

这个包是伟大的,非常感谢您所涉及的所有工作!

最近,MATLAB改变了双轴绘图的语法,不再推荐使用plotyy()命令。当使用yyaxis()代替时(这是他们推荐的),图中不再有两个轴对象,而只有一个。
虽然matlab2tikz在有两个坐标轴对象时工作得很好(可以使用ah = findobj(gcf,'Type',' axes ')检索它们的句柄),但它不再以新格式显示左侧图形。你能修好这个吗?那将对我有很大的帮助,谢谢!

OlaØ任

亲爱的Egon,非常感谢您的回复。

@Deepak Ingole:这不是错误信息,只是信息。我们不会正确检查你安装了哪个版本的pgfplots(因为这在一个平台独立的方式中是复杂的)。然而,我们确实会检查你的绘图是否需要一些最新版本的功能,在这种情况下,我们会相应地调整信息。
检查之所以存在,是因为相当多的人都在使用旧版本,这样他们就可以事先知道LaTeX是否会阻塞。

请注意,消息读“你将需要pgfplots 1.3或更新”,所以你应该是1.14。

如果这样的信息消息困扰你,你可以添加" showInfo', false '到matlab2tikz的参数来抑制这些消息(也可以看看'帮助matlab2tikz ',因为有更多的选项来减少输出到控制台)。

有人能帮我解决一下pgfplots版本的问题吗?我有pgfplots版本1.14,但我仍然得到如下错误:“你需要pgfplots版本1.3或更新版本来编译TikZ输出。”

我在MATLAB 2015b中尝试过。

谢谢你!

•傅

•傅

谢谢你的最新消息。我有一些问题与使用输出文件:
1.当一个堆叠图形(面积图和常规y图)输出到.tikz或.tex文件中,并且我尝试在Latex文件中使用该图形时,所有数据点最终都位于与最初绘制时不同的位置。此外,图例消失,我设置的y轴标签(orientation, '0')的方向恢复到默认的90方向。
2.当我尝试使用一般matlab2tikz输出图形而没有指定任何缩放大小时,我最终得到了一个非常大的图形,超出了页面的限制。我必须总是手动缩放。fig图像到一个小得多的图像,除了指定缩放值,(例如。'width', '0.5\textwidth'),我没有做的旧版本。

伟大的工作!

据我所知,将“忘记情节”选项添加到冲浪情节的可能性是不存在的。我只是在函数'drawSurface'中添加了以下几行代码:

如果~ m2t.currentHandleHasLegend
%未找到图例条目。传说中不要包含情节。
opts = maybeShowInLegend(false, opts);
结束

它暂时解决了问题,但我不确定它是否提供了所有的意外。

了不起的工作!

我使用Matlab 2016b。奇怪的是,当我使用matlab2tikz生成.tex时,

1)在图中复制和再现了xticks的值,而不是xticklabels的值。

2)字体与我在Matlab中选择的不一样。

你能告诉我相关的链接,在那里我可以阅读这些问题,并可能解决它们吗?

谢谢

神奇的工作。荣誉

Buana

多年来一直在使用。我真的很喜欢。没有硕士或博士论文是无法想象的。

伟大的包,
当导出透明补丁时(例如从有界线导出),补丁的透明度是设置的,但轮廓是绘制的。下面可以在设置面alpha时在3030行左右添加
Opts = opts_add(Opts,'绘制不透明度',sprintf(m2t.ff,0));

@Egon Geerardyn,

我明白了……
到目前为止,你做得很好。所以,再次感谢。

我建议其他Tikz用户使用注释来手动修复他们需要的确切的警戒线。以下免费应用程序可能会有所帮助:GEOGREBRA。

@stefed:我们知道我们不完全支持yyaxis或R2015b/R2016a中的其他万博1manbetx新结构。您仍然可以尝试plotyy(除非这已从MATLAB的上一个版本中删除)。说实话,我已经有一个多月没有打开MATLAB了。

@pankaj singh:这不是matlab2tikz的问题,而是你所使用的LaTeX编译器的基本限制。请参阅以下文件https://github.com/matlab2tikz/matlab2tikz/wiki/TeX-capacity-exceeded,-sorry

@Djibril TOGOLA:我快速浏览了一下关于绿箭问题的源代码。这是一个已知的问题:这是我们仍然需要实现的东西。

@Egon Geerardyn……谢谢你!我也遇到了类似于@ragheb的内存问题。像. .“TeX容量超过,抱歉[主存大小=3000000]”。我的数字只有401KB。
然后我使用了,你建议的“0.3g”,它将我的图形大小减少到203 KB(几乎50%)。所以这对我很有效。再次感谢。

我请求作者改进他的代码,以便更大的图/图自动转换为latex可接受的大小。
谢谢……

U也可以用
\pgfplotsset{缩放x刻度=基数10:0}
\pgfplotsset{缩放y刻度=基数10:0}

在latex文档的序言中分别调整xtick标签和ytick标签…你可以按10:1,10:2等等来改变。根据您要求的刻度值。
谢谢

不包括蜱虫。为什么? ?

包括蜱虫吗??

很棒的工具,谢谢!

Luuk

@hannes费舍尔
你会想要这个设置移除千位分隔符:
'x标记标签样式={/pgf/number格式/1000 sep=}'

如果你为x标记样式设置了更多的设置,它看起来像这样:

'x标记标签样式={rotate=90,anchor=east,/pgf/number format/。Cd,固定的,固定的零填充,精度=0,1000 sep=}'

孙燕姿

很好,但我不支持yyaxis函数,这是MAT万博1manbetxLAB 2016a中的新功能。你能做到吗,拜托?

太棒了!非常感谢。

@Egon Geerardyn,谢谢你的建议,但我很遗憾地告诉你,它也不起作用。错误保持不变:

警告:不知道标注'matlab.graphics.shape.Arrow'。
在matlab2tikz中>userWarning(第5955行)
在matlab2tikz>中drawAnnotationsHelper(第3079行)
在matlab2tikz>中的drawannotation(第3024行)
在matlab2tikz>saveToFile(第519行)
在matlab2tikz中(第362行)

我发现解决这个问题的唯一方法是手动在tikz文件中添加注释。这是代价高昂的,因为它需要找到精确的坐标。

@Djibril TOGOLA:我认为在即将发布的1.1版本中,这种情况应该不会再发生了。你已经可以得到这个版本从我们的开发分支上GitHub (https://github.com/matlab2tikz/matlab2tikz/archive/develop.zip

该文件不适用于颤动的情节。我已经能够在2014a, 2014b和2016a版本上重现相同的错误。错误如下:

矩阵维数必须一致。

matlab2tikz>drawQuiverGroup错误(第3661行)
数据(4,:)= x + u;

matlab2tikz> drawwhggroup错误(第2466行)
[m2t, str] = drawQuiverGroup(m2t, h);

matlab2tikz>handleAllChildren错误(第654行)
[m2t, str] = drawwhggroup (m2t, child);

matlab2tikz>drawAxes错误(第852行)
[m2t, childrenEnvs] = handleAllChildren(m2t, handle);

matlab2tikz>saveToFile错误(第450行)
m2t = drawAxes(m2t, relevantAxesHandle);

matlab2tikz错误(第352行)
saveToFile(m2t, fid, fileWasOpen);

hw1p1中的错误(第22行)
matlab2tikz(“hwp1fig.tikz”)

===================================
除此之外,做得很好!

艾伦

在运行MATLAB版本:9.1.0.390522 (R2016b)预发布的Mac上,无头和图形测试均失败。

在最新版本的Matlab (2015b)中,我发现了以下错误:

警告:不知道标注'matlab.graphics.shape.Arrow'。
在matlab2tikz>userWarning(第5316行)

在以前的Matlab版本中,这样的错误没有发生。你怎么看?

这个工具是完美的。恭喜你,谢谢你!

Beenwa

@sreenath m.g.:谢谢你的赞美!如果有反复出现的麻烦弹出(或你觉得每次都有必要的小修改),请不要犹豫在GitHub上报告问题,我们将看看可以做些什么:-)

“matlab2tikz”在将matlab/gnu八度图转换为pgfplots/tikz方面做得很好,节省了大量的时间和精力。轴,刻度,标签,网格等是完美的tikz输出。现在不需要将变量写入带分隔符的文件以使用pgfplots进行绘图。在将tikz代码插入LaTeX之前,需要进行一些小修改。如果我们从一种格式转换到另一种格式,情况总是如此。一个很棒的包裹!感谢开发者。

@Matthew Taliaferro:谢谢你的赞美!目前,不支持在输出中的任意位置添加自己的代码。万博1manbetx但是,已经计划了一些支持(并且几乎完全实现了)万博1manbetx来实现这一点。您可以在https://github.com/matlab2tikz/matlab2tikz/pull/832

我非常喜欢这个程序,没有它我的论文就会很痛苦。有没有办法从matlab脚本中添加这样的输出tex文件?

\addplot [color=黑色,纯色,线宽=1.0pt,域=0:1,samples=11]{x+x^2};
\ addlegendentry{情商。\ ref{情商:方程}};

我的大多数图表都是分散数据和函数数据的混合。有时,使用pgfplots本地绘图工具绘制函数数据会很好。

@Stefan Schiessl:谢谢你的夸奖!有什么理由让你把它看作一个工具箱吗?一年前,我们评估了是否将其作为工具箱提供。那时候(我不能说现在的情况,但我认为几乎没有什么变化),不可能以一种体面的方式集成MATLAB工具箱、MathWorks的FileExchange和GitHub(即不存储大的二进制blob文件,这些文件可能会在我们的git存储库中过时)。当时,这个缺点大大超过了工具箱的少数优点(基本上:一键安装和分发)。但我们当然愿意重新考虑这一决定。

可靠的工具,为LaTeX创建奇特的情节!

你是否考虑将其作为工具箱提供?

@Jonas:很多MATLAB中关于线的标准属性都被翻译成TikZ,例如,如果你在MATLAB中设置了一个图的“线宽”,这将在相应的值中添加“线宽=…”如果你想有一个更低级的访问来调整TikZ代码(例如,没有MATLAB对应的东西),在未来的版本中,这将包括在内。已经有一个实验性的实施https://github.com/matlab2tikz/matlab2tikz/pull/832效果很好。

乔纳斯

是否可以将属性添加到addplot?某事像

addplot[…,线宽= 2 pt]

线宽= 2 pt
==============

自动不重新打开tikz文件??

@Lairenlakpam Joyprakash Singh:请在GitHub上报告未来的问题。在这种情况下,您的代码有一些错误:您提供给'floatFormat'的值是不正确的,它应该是'%0.3f'或'%0.3g'之类的东西。此外,建议将文件名作为第一个参数,而不是作为最后一个参数)。自旧版本以来,这一点一直没有改变:float格式多年来一直是这样。

谢谢。我看了那篇文章后买的https://github.com/matlab2tikz/matlab2tikz/wiki/TeX-capacity-exceeded,-sorry

它工作时,我使用LuaLaTeX。但是,使用其他命令,如cleanfigure()以及matlab2tikz('floatFormat','%0.3','myfile.tikz')不能工作,因为后面只绘制轴[没有波形]。

我的MATLAB代码是:
[信号,Fs, nbits] = wavread(“OSR_us_000_0010_8k.wav”);
情节(信号);
% wavplay(信号,Fs);%用于基于Windows的计算机
声音(信号,Fs);%用于基于Mac的机器

源wav文件来自开放语音库:http://www.voiptroubleshooter.com/open_speech/american/OSR_us_000_0010_8k.wav

@Lairenlakpam Joyprakash Singh:你可能想在我们的GitHub页面上报告你遇到的问题https://github.com/matlab2tikz/matlab2tikz并解释我们如何复制它们。

早期版本有三个文件,即matlab2tikz。米,matlab2tikzInputParser。M和updater。m, 2014年在正弦波的少点图和其他方面工作得很好,但现在我不能使用早期版本/甚至这个最新版本从MATLAB导出语音信号图到pgf:-(

早期版本有三个文件,即matlab2tikz。米,matlab2tikzInputParser。M和updater。m, 2014年在正弦波的少点图和其他图上工作得很漂亮,但现在我不能从早期版本甚至这个最新版本从MATLAB到pgf创建语音图:-(

塔希尔

这正是我需要的。再接再厉

刘骏

非常有用,工作非常好。做得好!非常感谢开发人员一直保持更新。

@Ingrid:目前不可能为不同的子图传递不同的参数。对于你的问题,我有一些解万博 尤文图斯决方案:

(1)我认为应该可以通过传递一个轴句柄而不是图形句柄来调用cleanfigure。因此,如果你使用不同的参数为每个子图调用cleanfigure,我认为这应该是可行的。

(2)上述不奏效的;将子图分割到不同的图形上,在每个图形上运行cleanfigure,然后将这些图重新组合为一个图形中的子图(FileExchange和StackOverflow上有一些函数可以帮助完成这些步骤)。

(3)在GitHub上的develop分支中,有一个新的简化算法,它使用子图的大小(和分辨率等)来简化你的轨迹。这应该比这里的版本更可靠,并且可能更好地使用单个图形宽度设置。

我的内存不足,所以我需要应用清洁的数字。然而,我的不同子图的规模是不一样的,所以我需要对每个子图应用不同的精度,而不是对所有子图应用一个相同的值——我该如何实现这一点?

英格丽。

@Ingrid:这些变化还没有传播到你可以下载的版本。如果你想尝试这些新功能,请下载https://github.com/matlab2tikz/matlab2tikz/archive/develop.zip代替。

英格丽。

根据这个https://github.com/matlab2tikz/matlab2tikz/pull/773#discussion-diff-39700006R1078有一个传说而不是两个应该是固定的战术,但我仍然得到两个传说

这个脚本太棒了。这是我一生中见过的最漂亮的科学报告。再接再厉!

阿尔方斯

数字格式可以在LaTeX文档中使用“pgf/number format”选项来设置。更多信息可在TikZ手册(https://www.ctan.org/pkg/pgf),以及pgfplotstable手册(https://www.ctan.org/pkg/pgfplotstable)包含很多信息。

大家好,

谢谢你的工具。这对我帮助很大,情节看起来很好。但是我花了几个小时在寻找解决问题的方法,但没有成功。

下面就是:
我只想在没有任何东西的情况下sererate数千,我不想要这样的数字:2000。我只想要这样,2000。
我应该在脚本的哪一行中更改它?

谢谢你!

@Raph:谢谢你报告关于markerEdgeColor的bug !我们会解决这个问题。
同时改变大小和颜色的散点图,不幸的是,目前还不支持。万博1manbetx问题是,两者在pgfplots中使用相同的机制设置(即元数据),所以指定一个将与另一个发生冲突。我认为可能有办法解决这个问题,但可能需要相当长的时间才能实现。

当散点的颜色由色图设置时,散点标记的缩放也不起作用。当所有的散射体都有相同的颜色时,它工作得很好。

很棒的工具,非常感谢。

使用scatter()得到错误

未定义的函数或变量“markerEdgeColor”。
>
getScatterOptsColormap(第3237行)
> [m2t, ecolor] = getColor(m2t, h, markerEdgeColor,'patch');

添加一行
> markerEdgeColor = get(h, ' markerEdgeColor ');
有帮助,也许你可以包括这个或提供一个更好的解决方案。

@Cornelius Thies: x轴上的日期时间值已添加到我们的MATLAB 2014b和更新版本的开发版本中。你可以通过下载GitHub上的“开发”分支来获得这个版本(否则,它也会在这里发布,但我还不能保证任何日期)。

这个工具对于在Latex文件中创建漂亮的图形非常有帮助-谢谢!
但是,我遇到了一个问题:我有一个以datetime-value为x轴的图。当将图形导出到tikz文件时,只显示数值,而不显示正确的日期。这个问题能解决吗?

@Andries:我们确实支持等万博1manbetx高线图:-)(请确保您有1.0.0或更新版本)。这些情节中有很多应该没有问题,但我不得不承认,有些部分还没有实现https://github.com/matlab2tikz/matlab2tikz/issues/723.但这些问题肯定会在未来的版本中得到解决。

伟大的文件,但请支持等高线图!万博1manbetx

谢谢信息大多!

@Tina Fohrmann:这只是一个警告,因为matlab2tikz无法确定图形在物理单位中的物理大小。你可以使用“warning off MATLAB2TIKZ:UnknownPhysicalUnit”关闭这个警告。但可能最好的解决方案是将单位重置为物理单位:"set(figureHandle, ' units ', 'inch')"(或任何其他你喜欢的MATLAB单元)在你执行你提供的代码之后。然后MATLAB负责转换。

谢谢你的好文件!
我得到以下错误
警告:不能转换单位“正常化”。使用转换因子1。

当调整图形大小时:
集(figureHandle,“单位”,“归一化”);
set(figureHandle,'Position',[0 0 0.6 0.75]);

我能做些什么吗?

杰里米

@Sebastian Bomberg:我已经在我们的GitHub跟踪器上添加了这个功能请求。

我们确实有一些3D直方图的支持,但它非常有限。万博1manbetx在你提到的链接中,Nico也展示了一个3D直方图的例子。然而,正如你所看到的https://github.com/matlab2tikz/matlab2tikz/issues/732在美国,由于多种原因,目前很难完全支持这样的数据。万博1manbetx

感谢Nico的巨大贡献!

关于iso轮廓,我遇到了一个小问题。
显然,高定系列的产品线规格被忽略了。

%开始代码

Z = peaks();

次要情节(1、2、1)

hPC = pcolor(Z);

高性能计算。FaceColor = 'interp';
高性能计算。EdgeColor = 'interp';
高性能计算。LineStyle = 'none';

保存所有;

contour(Z, '-k', 'ShowText', 'on');

推迟;

次要情节(1、2、2)

contour(Z, '-k', 'ShowText', 'on');

matlab2tikz(“pcolorAndContour.tex”、“独立”,真正的);

%结束代码

计数器线应该显示为黑色,但绘制与pcolor补丁相同的色图。这样你就看不到它们了。这一点在第二次要情节中变得更加明显。

我非常感激你的帮助。

塞巴斯蒂安。

伟大的代码!一直使用它。很多谢谢!
我想建议支持histrogram2对象。万博1manbetx有关它的更多信息可以在以下网址找到:http://tex.stackexchange.com/questions/52987/3-dimensional-histogram-in-pgfplots

杰里米

谢谢你这么好的包裹!

matlab2tikz

@E。Ch3yn3t:你可能想尝试' cleanfigure '函数来清理你的数据。如果这不能清除很多nan,请在github上提交功能请求https://github.com/matlab2tikz/matlab2tikz/issues

非常好的倡议!

给定的图形可能包含许多NaN值。
我想知道是否有可能在这个脚本中实现一个方法来自动从创建的tikz文件中删除NaN值。目标是减小所创建文件的大小,并增加其可读性。

@PatronBernard:这很有可能,是的。在即将发布的版本中,我们将更清楚地说明这种依赖关系。

附录:可能是当图形的标题包含LaTeX标记时。

聪明的软件。但是,您的最小工作示例是否可能需要包含amsmmath -package?

太棒了……

伤害

外一个

工作好了!伟大的工作!cleanfigure()函数也很棒

约翰内斯

@redfixie:你能在GitHub上报告一下吗https://github.com/matlab2tikz/matlab2tikz/issues(连同一小段MATLAB代码来重现这个问题,以及您使用的matlab2tikz和MATLAB的版本)。谢谢!

redfixie

嗨,我有一个小问题。当我使用matlab2tikz转换堆叠柱状图时,LaTek只显示柱状图的最终颜色,而不是整个范围。任何建议吗?

彼得帕

Olivier的问题在开发版本中得到了修复。

嗨,奥利维尔,你能报道一下这个吗https://github.com/matlab2tikz/matlab2tikz/issues用最少的代码示例来重现问题?

奥利维尔

工作得很好,除了标签中的符号|,我需要编辑.tex并用$|$替换|。还有别的办法吗?

ADITHYAN

太棒了。非常感谢你的工具。

onewhaleid

再次感谢你的伟大工具,Nico Schlömer。我只有一个善意的请求。是否可以自动检查一个图是否由ternplot函数生成,然后使用pgfplots的ternaryaxis-features将其导出到tikz ?

尼科

@Janis直方图支持已经添加到正万博1manbetx在开发的分支中,并将成为下一个版本的一部分。

詹尼斯

R2014b中引入的新的直方图特性似乎还不支持:万博1manbetx

使用matlab2tikz>handleAllChildren错误(第664行)
我不知道如何处理这个对象:直方图

@dsaf R2014b (HG2)的这个问题已经在开发分支中修复,并将在下一个版本中出现。

dsaf

dsaf

@Oleg:这是这个问题的最小版本:

加载用户定义的颜色映射矩阵
Fig1 =图(1);
显示亮度图像(log10 (rand (200200)));
colorbar;

这将不会在tikzpic中创建任何颜色条
Matlab2tikz ('figurehandle', fig1, 'test.tex');

@托马斯:请提交一个问题https://github.com/matlab2tikz/matlab2tikz/issues提供重现错误的最小示例(包括所使用的Matlab和matlab2tikz版本)。

@dsaf:你能详细解释一下你说的“没有成功”是什么意思吗?

dsaf

新的色条功能作为MATLAB R2014b(<=>色条对象而不是坐标轴对象)还不支持,对吗?万博1manbetx

我试图保存一张带有用户定义的色彩图的图像,但没有成功…

托马斯。

伟大的工具,它使工作更容易!谢谢!

但是对于一个大的图,包括一个颜色条,我得到了一个错误,已经在2013/05/12报告。

使用matlab2tikz>patchcolor2xcolor错误(第3699行)
不知道如何处理颜色模型“interp”。

错误matlab2tikz>getColor(第3646行)
[m2t, xcolor] = patchcolor2xcolor(m2t, color, handle);

matlab2tikz>drawPatch错误(第1786行)
[m2t, xEdgeColor] = getColor(m2t, handle, edgeColor, 'patch');

matlab2tikz>handleAllChildren错误(第620行)
[m2t, str] = drawPatch(m2t, child);

matlab2tikz>drawAxes错误(第838行)
[m2t, childrenEnvs] = handleAllChildren(m2t, handle);

matlab2tikz>saveToFile错误(第438行)
m2t = drawAxes(m2t, relevantAxesHandle);

matlab2tikz错误(第349行)
saveToFile(m2t, fid, fileWasOpen);

我使用Matlab R2013a。也许有人可以帮忙?

@Ragheb:我们也有一些关于如何解决你的问题的信息在我们的维基上https://github.com/matlab2tikz/matlab2tikz/wiki/TeX-capacity-exceeded,-sorry

嗨,他,

为了在使用大的PGF或TIKZ数字时增加内存,对于MikTEx使用命令行:

initexmf——edit-config-file =乳胶

打开一个编辑器,可以在其中放置新值。如。

main_memory = 5000000
extra_mem_bot = 5000000
font_mem_size = 5000000
pool_size = 5000000
buf_size = 5000000

然后调用next来更新latex格式文件。
initexmf——转储=乳胶

对于PDFlatex,在这两种情况下,乳胶替换为PDFlatex

为什么Latex不能编译大的tikz文件?

我已经尝试了matlab2tikz在matlab的三维球面图,它工作得很好,因为对应的tikz文件只有50KB。然而,我想在tex文件中包含的数字经常超过100MB!乳胶拒绝编译这样的文件给我的错误:“TeX容量超过,对不起[主内存大小=5000000]”。

你能告诉我怎样解决那个问题吗?

彼得帕

@Pepijn,我也报告了你的问题:
https://github.com/nschloe/matlab2tikz/issues/435

彼得帕

@Konrad斯特尔,
这一点已经有了报告,并将得到改进。看到https://github.com/nschloe/matlab2tikz/issues/377

嗨!
在新版本中,它总是添加:

每个外x轴的直线/。添加风格={白15 !黑},
每一个x标记标签/。附加风格={字体={\颜色白色,15 !黑色}}

到TeX-Code(以及y轴),即使我使用

Ax = gca;
斧子。XColor = '黑色';
斧子。YColor = '黑色';
斧子。ZColor = '黑色';

在matlab代码中。

有办法改变吗?我不想要灰轴,也不想每次都手动更改。

在2014b之前的版本中,大多数注释都是支持的。万博1manbetx在2014b,我们还没有实施它们。

莫妮卡

它支持Matla万博1manbetxb中的注释吗?它不会绘制箭头或文本框

莫妮卡

它支持Matla万博1manbetxb中的注释吗?它不会绘制箭头或文本框

莫妮卡

它是否支持Mat万博1manbetxlab中的注释?它不会绘制任何箭头或文本框。

@arnold:我让Nico把这个链接放在顶部,以减少这里的错误报告数量,并在Github上获得更多的反馈。

你可以从更新的历史中看到,我们很少有新的版本(上一个是在4月份),我们非常有意识地发布它们(我同意你的观点,这样的列表不应该被污染,我们尽量不这样做)。

这里的最后一次更新是在我们发布0.5版本的时候。但由于FileExchange现在与我们在Github上的主分支集成,它已经变得不太清楚什么是更新:没有手动过程涉及Nico更新此页面。与The Mathworks一起,我们目前正在寻找将GitHub和FileExchange结合起来的好方法,并以更清晰的方式提供新版本。无论如何:虽然这一页还没有被改变在一个重要的方式,代码已经:-)

嗨,尼克,
非常有用的工具,非常感谢。

一个相当不寻常的评论/问题:我对你一直在进行的所有“更新”感到困惑。我尽量保持我使用的文件更新,因此我定期检查这个网站。你以“更突出地呈现贡献链接”为借口,多次“更新”了贡献内容。我猜你不会这样做只是为了把这个文件推上“最近”列表,但我永远找不到更新。

我想我不是唯一一个花时间检查你在代码中更新的东西的人。就像代码一样好,文件交换上的“最近更新”列表变得相当无用,如果每个人都这样做,或者你试图将每个人都移到github:)

我使用的最有用的脚本,伟大的工作:)

@Vegar: m2t使用图形中设置的绘图单位,默认情况下是英寸。您可以更改这些或手动提供选项' width '和' height '(在那里您也可以使用' \textwidth ', ' \columnwidth '等)。

@Todd:如果你提供' strictFontSize '选项,字体大小是受尊重的。

@Jan:“等高线”在MATLAB 2014b或更高版本的m2t v0.5上被翻译为pgfplots“等高线”。(' contourf ',然而,在这种情况下还不支持)万博1manbetx。

提交是优秀的!但是,默认情况下,它定义了以英寸为单位的地块宽度和高度,符合美国纸张标准,而不是全球更常见的ISO A4标准。

我是否可以建议将图形宽度更改为\textwidth的一部分?

天才! !

托德

太棒了!不过还需要更多的选择。

1.指定轴、图例等的字体大小。

2.当给定的Matlab图中有多个轴时,这些轴在latex中间隔不正确。

3.选项包括额外的代码在tikzpicture环境。

间的

我一直在用这个!

Jan Kappen

非常好。

但有两个小问题:
第一个问题:是否支持等高线图?万博1manbetx我指的是pgfplot的等高线。如果我使用'contour(peaks(20),10);',并使用m2t导出它,只使用面积图。

第二,如果我使用contourf,标记是看不见的,标记标签就在那里。那是虫子吗?

谢谢你!

Sharah

我希望任何人都能回答这个问题。这句话很好,如果我绘制一个数字,然后把它改成tikz。

但问题来了,当我试图添加一些个性化的文本上的数字,当我试图包括它在tex文件,它说错误之类的

包pgfplots错误:[mesh/rows=2,mesh/cols=0]的参数假设为0 p
我得了N = 1分!数据矩阵似乎不完整

亚伦

非常感谢!

Georg

我有一个自定义定位的颜色条,脚本还没有说明这一点。这是你将来会考虑的事情吗?

西蒙

对于2014b版本,它有问题。例如,图例消失了。
干杯

尼科

谢谢你的精彩剧本!

我遇到了两个问题,我试图通过修改代码来解决(请谨慎使用:)
(我正在运行R2013a和pdflatex)

1)多行图例条目:
最小工作示例:在matlab中运行:
----
图;情节(1:10,1:10);legend(sprintf('这是一个\n多行传说条目'))
Matlab2tikz ('filename', 'm2ttest.tex', 'width', '0.8\columnwidth', 'height', '5cm')
----
乳胶:
——头
\ usepackage {pgfplots}
最新\ pgfplotsset{兼容=}
\pgfplotsset{绘图坐标/数学解析器=false}
\ usetikzlibrary {plotmarks}
之后,\{文档}——开始
开始\{图}
输入\ {m2ttest.tex}
\标题{TIKZ测试}
结束\{图}
----------------

结果:图例条目出现在一行中。在m2test .tex中有一个换行符,latex忽略了它。
我试图解决这个问题:
a)改变函数prettyPrint,第4840行(见底部的diff)
B)在第731行更改(见底部的diff):添加"[align=left]"到"\addlegendentry"。如果不这样做,如果在图例条目中使用了换行符“\\”,我的latex将终止并报错。我已经看到matlab2tikz将图例样式设置为“图例cell align=left”。为什么额外的,明确的规范“align=left”是必要的是奇怪的…也许我做错了什么?

2)图例定位:
当我移动图例,说,在图形的左下角(在gui中),它不会(准确地)出现在乳胶的这个位置。问题似乎是在matlab中,图例的位置是相对于图形的,而在tikzpicture中,它是相对于轴的。从第3646行开始,matlab2tikz似乎试图确定matlab位置是相对于图还是轴(unit = "normalized"或"pixel")。在我的例子中,单位是“标准化”的,但位置仍然相对于图形。因此,我只是修改了脚本,使其始终表现为单元是“pixels”(将代码从“case 'pixels'”复制到“case 'normalized'”)。在那之后,传说positionig工作如预期。

我在matlab2tikz.m中修改的内容:
diff matlab2tikz.m。源自matlab2tikz.m
713年c713
< sprintf(‘\ \ addlegendentry {% s}。\ n \ n”,加入(m2t, c , '\\'))];% #好吧
---
> sprintf(“\ \ addlegendentry [align =左]{% s}; \ n \ n”,加入(m2t, c , '\\'))];% #好吧
3646 c3646, 3651
< position = legendPos(1:2);
---
> %position = legendPos(1:2);
计算图例在轴上的位置。
> axesPos = get(m2t.currentHandles。gca,“位置”);
默认情况下,轴的位置为图形的w.r.t.,
> %,传说也是如此。
> position = (legendPos(1:2)-axesPos(1:2)) ./ axesPos(3:4);
4840 c4845, 4848
<
---
既然字符串中的所有字符数组都是一维的,我们还需要在换行符处拆分字符串
> strings = cellfun(@(x)strsplit(x, sprintf('\n')), strings, 'UniformOutput', false);
> strings = [strings{:}];
>

Saliou

@Kine
在运行之前,在脚本的末尾添加这些行。这对我来说确实有用

Axoptions ={'缩放x刻度= false',…
'x标记标签样式={/pgf/数字格式/。Cd,固定,固定零填充,精度=3}'};

matlab2tikz(‘mypicture.tex’,‘extraAxisOptions axoptions);

亲爱的作者,
在测试您的包时,它发现它非常有趣。然而,我有时会遇到这样的错误:

" failed to access CData(:,1);索引越界,因为size(CData)=[0,0]。
".

你能告诉我发生了什么事吗?

非常感谢,真的很有用

Luuk

非常有用,谢谢!

Fariborz

马丁

优秀的方案。谢谢你的工作。

嗨!

非常好的工具。我刚刚尝试转换一个使用散点(X,Y,[],C)的图形,以绘制不同颜色的圆。

在getColor(m2t, handle, color, mode)函数中似乎有一个代码错误(或者该特性还没有实现)。它似乎不能处理多种颜色。

一个简单的例子是:
分散([1 2],[1 2],[],[0 0 0;0 10 0]);
matlab2tikz(“test.tikz”);

这将导致错误。你觉得你能搞定吗?绝对很棒;)

母牛

嗨!
喜欢这些数字的样子!但我有一个问题,有没有办法求出轴的极限?例如,我正在制作一个值为0.005、0.006……在x轴上,当我把图形放到Latex中,我得到0.5 * 10^{-2},我是否可以强迫它恢复到原来的样子?有没有办法使y的极限是特定的值?

1月

即时五星,因为它不仅非常强大,而且非常容易使用。谢谢你!

从现在开始在Matlab/LaTeX中工作时必不可少的工具。但是,当引入TeX符号或代码(比如P_e)并且tikz文件将其作为纯文本时,图的图例中会出现一些问题,但我猜这是可以修复的(我在生成的文件中手动完成)。非常棒的文件,谢谢。

这是一个非常有用的MATLAB工具。:)

首先,非常好的工具!它与TeX结合产生了迄今为止最美丽的情节!

只是一个小问题,为了匹配德语排版,我用逗号分隔符替换了所有的点分隔符-之前-使用matlab2tikz。
这对于轴标签、标题和勾号标签来说效果很好。但是关于图例条目似乎有一个问题:

我的一些legendentry包含以点分隔的数字,因为它们是使用num2str()动态创建的。它们与一些描述性文本结合编写。所以一个传说可能是:

$\lambda = 1.5$, $Delta = 3.4$

在用逗号替换这些点之后,它可以是
$\lambda = 1,5$, $Delta = 3,4$

\λ= 1{}5美元,δ= 3{}4美元(我试过两种类型)。

在图形上使用matlab2tikz后,legendentry中的“原始”逗号被保留,而分隔符逗号再次被点分隔符取代…

我希望你能理解我的意思,也许你也有一些解决这个问题的提示

问候

在默认情况下将externalData设置为true是错误的;一个新的版本将很快发布,修复这个问题。

@Felix
“ExternalData”,假的
或rtfm

我认为编译器正在抱怨。tsv文件中缺少“\\”

费利克斯

费利克斯

嘿,

我今天更新到0.4.5版本,创建了几个.tsv文件,而不是一个大的.tikz文件。

这可能对你们中的许多人有利,但我宁愿要一个大的。tikz文件。

有办法改回来吗?

蒂娜

我发现了这个问题:
Ubuntu的texlive版本仍然使用pgfplots 1.8,但对于最新的matlab2tikz文件,pgfplots 1.9是必要的(对于有errorbars的图)。
在ubuntu中安装pgfplots 1.9有点痛苦,但在这样做之后,它又可以正常工作了。

也许在下一次更新中会有一个提示,那就是需要另一个pgfplots版本。

蒂娜

嘿,
我很喜欢matlab2tikz,谢谢你的文件!

不幸的是,我现在有一个错误栏的问题:
在旧版本v0.4.2中,点和柱被定义为(x,y)+-(xerr,yerr)... .
现在在v0.4.4版本中,它是(x,y) += (xerrup,yerrup) -= (xerrdown,yerrdown)。在texmaker中编译该文件对我来说不起作用。有人有同样的问题或者知道如何解决这个问题吗?

谢谢你的帮助。

LaTex做得很好。
谢谢

卡尔

卡尔

卡尔

对于同时使用MATLAB和LaTeX的人来说,这是一个非常好的补充!给你五颗星。*****

关于我今天遇到的小问题:
当使用cleanfigure时,我得到一个警告。
——警告:忽略未知参数“minimumPointsDistance”——
这是从函数cleanfigure()的帮助中复制的确切参数。我没有得到错误时使用'minimumPointDistance'(“点”而不是“点”)。我只是想让你知道!

尼古拉

美联社

Jørgen

我认为在Latex中使用'figurewidth'变量来设置图形大小时,导出条形图时存在一个问题。条的宽度被设置为与'figurewidth'相同的值。这使得栅栏太宽了。

@Anfänger听起来像个bug。如果你想要修复它,请提交报告。https://github.com/nschloe/matlab2tikz/issues?state=open>和一个最小的MATLAB示例,突出错误行为。

安防

只是对我的问题的一个小更正:通过标签,我的意思是,当我把轮廓标签放在框中,框被matlab2tikz忽略。例如,如果我切换轴位置(x轴在顶部),标签仍然由matlab2tikz写在底部

安防

@Nico Schömer,非常感谢你的工作。如果你允许我,我想问为什么m2t忽略了例如标签,添加的文本……等等?

@lyxicon

1.有一个选项“extraAxisOptions”。如果这对您不起作用,您可以在<文件中提交一个错误。https://github.com/nschloe/matlab2tikz/issues?state=open>。

2.有cleanfigure()来帮助你。

3.这是可能的,你可能是第一个对m2t使用阶跃/脉冲图的人。如果你能提交一个错误并提供最少的失败示例,那就太好了。

如何使用cleanfigure()函数?我需要减少我的图中的数据点数量。我运行cleanfigure(),但没有任何变化。有人能帮帮我吗?

太酷了!谢谢你!

lyxicon

非常惊人的屈服。我只遇到了一些小问题:

1.没有办法为每个子图提供额外的轴选项(例如高度和宽度)。当您有几个具有公共x轴的垂直堆叠子图,并且您希望从除底部外的所有子图中删除x轴标签,或者您希望每个子图具有不同的高度时,尤其需要这样做。

2.它需要一个更好(更智能)的下采样算法。目前,当你有大量的点数时,很容易达到TeX内存限制http://tex.stackexchange.com/questions/59562/matlab2tikz-tex-out-of-memory/66831#66831

3.它不能正确地转换由step(), impulse()函数等自动生成的时间图(来自控制系统工具箱)

这很酷,效果比png图片好看多了。

安防

太好了!事实上,它确实节省了很多时间和工作。我是tikz的新手,想问一下,是否有一种方法可以同时生成。*tikz和*.pdf文件?不需要在外部编辑器中打开。*tikz文件并生成PDF版本。

非常实用,结果看起来真的很棒。

是否有可能更改代码,使“点元最小”和“点元最大”值总是保存,以便在我选择添加一个颜色条后,它将显示正确的比例?

把你的问题写在https://github.com/nschloe/matlab2tikz/issues?state=open使用一些最少的示例代码来突出错误所在,将使修复问题变得更容易。

马可

绝对是很棒的工具!

空白的问题(cf Christoph, March 25, 2013)还没有完全修复(v.0.4.0):

在“defincolor”行周围,应该放置更多的“%”:

第555行:在前面放一个额外的%%

m2t.content。Colors = sprintf('%%\n%%定义自定义颜色\n');

第562行:

m2t.content。颜色= [m2t.content.]颜色sprintf(“% % \ n”)];

感谢您在未来的更新中添加此功能!伟大的工作!

罗伯特。

喜欢这个工具,但是minimumPointsDistance选项发生了什么?我到处都找不到……它在当前版本中被删除了吗?有人知道一个工具可以在matlab2tikz接管之前减少数字中的数据点吗?

谢谢

玛丽亚

真是个不错的包装!很多谢谢!

我遇到了一些问题,虽然与子图有关。

1)子图中的错误条不打印。我收到以下警告:
"警告:错误条被丢弃(要实现)。"

2)我正在使用备用标签。M生成子图的超x/y标签。
在使用matlab2tikz时,是否有任何方法将suplabels保留在图中?现在,当我把数字插入乳胶时,标签不见了。

3)最后一个问题是如何将图例保持在指定位置。有什么建议吗?

非常感谢您的帮助!

Pepijn

首先,我真的想谢谢你给我这么棒的包裹。虽然我发现了一个小错误。
当我使用:

A = randn(10000,1);
B = a+2;

图;保存所有;
嘘(100);
嘘(b, 100);

h = findobj('-property','FaceColor');
集(h(1),“FaceColor”,[1 0 0],“EdgeColor”,[0.5 0 0]);
集(h(2),“FaceColor”,(0 0 1),“EdgeColor”,[0 0 0.5]);

uistack (h(2),“顶级”)

传奇(“正常”、“级联”);
matlab2tikz(“test.tex”、“宽”、“0.7 \ textwidth”,“showInfo”,假);

如果我渲染test.tex, Normal和Cascading的图例将是暗红色。它们应该是蓝色和红色的。

@Gregor你必须指定一个合适的格式。试着“% .3g”。

格雷戈尔

很棒的包,但我有一个问题与'floatFormat'参数。
如果我不设置这个参数,所有的数据点都被写入结果*.tex文件-但它太大了。
所以我这样设置精度:
matlab2tikz('myfile.tex', 'floatFormat', '3');

在输出中没有数据点被写入,在本例中只有'3'。

这是一个问题还是以错误的方式使用这个参数?谢谢你!
我希望你能帮助我。

非常棒的包装,非常感谢!但我有个小问题解决不了。我需要在“\addplot”选项列表中添加“mark repeat=25”作为额外的参数。但是我不知道怎么做。'extraTikzpictureSettings'把它放在\addplot环境之前。是否有一个改变,添加一个输入变量修复这个问题?再次感谢!

玛丽安

你好,
首先:非常好的教程!谢谢你。
我的tikz文件有问题,我不知道怎么解决。
y轴上的标尺与y轴上的标尺重叠。原因是刻度的值非常小,要乘以10^-3。而不是10^-3在顶部(在x轴上),刻度的所有值都分别与它相乘,例如。
1 * 10^-3
8 * 10^-4
6 * 10^-4
...
因此,标签与第一列值重叠。我不明白为什么在x轴上是正确的形式而在y轴上不是。在我的matlab图中,一切都很好。
我希望我的解释是可以理解的,有人对这个问题有一个解决方案。

蒂娜

好的,经过一天的搜索,我想我找到了问题....我有一个旧版本的pgfplots…

蒂娜

我想我和Arne有同样的问题…

由于某种原因,我得到错误,包括用matlab2tikz创建的tikz文件到LateX(但其他tikfile)。我使用MATLAB R2012a, texmaker和ubuntu。

问题似乎出在tikz文件的表中。

我得到的一些错误:(line with};在桌子的最后)
\endcsname插入<再次读取>\protect}
额外! \ endcsname。\ pgfutil@ifundefind . .\ifx\csname#1\endcsname\relax \expandafter \pgfut…
!换行符的使用不符合它的定义
@firstoftwo的实参有一个额外的}

我非常感谢你的帮助!

发牢骚

凯文

使用matlab2tikz>patchcolor2xcolor错误(第3523行)
不知道如何处理颜色模型“interp”。

错误matlab2tikz>getColor(第3472行)
[m2t, xcolor] = patchcolor2xcolor(m2t, color, handle);

错误在matlab2tikz>drawPatch(1982行)
[m2t, xFaceColor] = getColor(m2t, handle, faceColor, 'patch');

matlab2tikz>handleAllChildren错误(第640行)
[m2t, str] = drawPatch(m2t, child);

matlab2tikz>drawAxes错误(第829行)
[m2t, childrenEnvs] = handleAllChildren(m2t, handle);

matlab2tikz>saveToFile错误(第487行)
m2t = drawAxes(m2t, relevantAxesHandles(ix), alignmentOptions(ix));

matlab2tikz错误(第396行)
saveToFile(m2t, fid, fileWasOpen);

凯文

使用matlab2tikz>handleAllChildren错误(第674行)
我不知道如何处理这个物体:光

matlab2tikz>drawAxes错误(第829行)
[m2t, childrenEnvs] = handleAllChildren(m2t, handle);

matlab2tikz>saveToFile错误(第487行)
m2t = drawAxes(m2t, relevantAxesHandles(ix), alignmentOptions(ix));

matlab2tikz错误(第396行)
saveToFile(m2t, fid, fileWasOpen);

佩德罗

Nico,谢谢你的投稿,我相信很多人都从中受益。
我有和Etienne一样的问题,如下所示:Matlab补丁在3D图中的排序不正确,必须手动修复,这对于较大的图形可能无法实现。

凯文

非常有用的。但如何保持字体名称/颜色/大小轴或标题的数字?

阿恩

我想使用这个很好的脚本,但由于某种原因,我不能使它工作。我使用Matlab R2009b在ubuntu下与Kile。即使使用基本的代码,它也无法工作。

我得到以下错误:
[PDFLaTeX]已完成退出代码1

./ test图片.tex:1005丢失\endcsname插入};

。/ testpic.tex:额外\ endcsname};

有人能帮忙吗?

Christoph

Matlab2Tikz是一个很棒的工具!谢谢楼主分享!
你做得很棒,帮了我很多。然而,在未来的版本中(目前尚未发布0.3.2),有一件小事你可能想要改变:如果你试图转换一个等高线(f)图并将结果包含在tex文件中,你会在对齐方面遇到麻烦。这是由结果文件的序言部分导致的,其中有一些空行和\definecolor命令。在我的乳胶分布(miktex)中,每个换行符都会导致向右偏移(可能会解释为“空白”),并且随着更多的颜色被定义,图形也会进一步偏移。为了避免这种行为,我在\defincolor设置的地方添加了%%,因此它是:sprintf('\\ definecolol{%s}{rgb}{%.15g,%.15g,%.15g}%%\n'
要获得一个真正紧凑的边界框,序言中的其他一些行可能也需要%-sign。
如果你需要,我可以给你一个简单的例子来说明这个问题。

最好的问候,
克里斯托弗。

奥托Debals

@Georg我当然可以把这作为一个选择。如果你可以在<文件错误https://github.com/nschloe/matlab2tikz/issues>,再解释一下需要什么样的格式,那就太好了。

Georg

工作非常棒-我只有一个小建议:你能在定义自定义颜色时将图的RGB值转换为CMYK吗?在使用pdflatex时,这已被证明是在adobereader中正确显示颜色所必需的,并且似乎是一个众所周知的问题

@Karthick你可以使用' latex '(生成ps文档)以及' pdflatex '的结果文件,字体出来就像它们在latex文档中一样,你可以在它生成后自定义你的情节,可能还有一堆其他原因。总而言之,当您将MATLAB生成的PDF与matlab2tikz的编译输出进行比较时,您会注意到质量上的明显差异。

Karthick

这的确是一个很好的包装。但是与matlab中的“打印为pdf”选项相比,它有什么优势呢?

亲爱的妮可

我试图转换一个有许多补丁的3d图,但顺序是不正确的。一些本该出现在其他补丁后面的补丁却出现在前面。我不确定这是否是一个tikz问题,但想知道你是否也遇到过这种情况。任何帮助都将不胜感激。

@H VH Ayala:试试matlab2tikz(“严格”,正确)。这样就能把刻度精确地放到MATLAB给出的位置。

H VHA

你好,

如何在m2t上只设置预定义的xticks ?

在MATLAB中使用stem(.)命令,人们只会对在xticks中有数据关联的值感兴趣。

问候

@Anke目前仅用m2t是不可能实现的,我甚至不会推荐它用于线状图——毕竟,m2t无法判断哪些数据对你重要,哪些数据可以被剥离。我建议您手动减少3D图中的数据点数量,直到TeX编译时间变得可以承受为止。

Anke

很棒的工具,谢谢!只有一个问题:我如何正确地使用“minimumPointsDistance”选项冲浪情节?对于正常的情节,它工作得很好,但对于冲浪,什么都不会发生……

美联社

很完美!好工作!

Caio

卡坦

完美的

Sylvain Chev

这是科学出版物的必备品。非常感谢你的努力。

@Georg如果你在https://github.com/nschloe/matlab2tikz/issues给出更多的细节(如提供与MATLAB代码一起失败的png),我可以尝试解决这个问题。

Georg

效果好极了!让穿着乳胶的人看起来很棒。

但是有一个小缺陷:当我叠加到轴上时,其中一个包含透明的图像,输出是两个全黑色的png。

只是令人惊叹!

nnunes

胡安

这是我见过的最好的matlab/latex代码!!

@H VH Ayala:
这些样式是否允许使用\usepackage{pgfplots}?这是唯一的条件。
此外,通过使用Pgfplots的“外部化”特性,您可以将这些图转换为任何期刊都应该支持的pdf。万博1manbetx(你可能也想看看matlab2tikz的“独立”选项。)

H VHA

脚本生成的tex文件中包含的TikZ文件是否符合Elsevier和IEEE等期刊提交?

gbernardi

Armin Schoisswohl的解决方案成功了!;)

gbernardi

亲爱的尼克,

是否有办法操纵情节元素的顺序?当我绘制数据点和线时,它似乎并不尊重它,例如plot(x,data,'k.',x,fit,'r-')绘制前景中的黑点,而不管Matlab的绘图顺序如何,使得红线对于大型数据集几乎不可见。同样的问题也发生在“ko”上,而“k-”,即两个元素的线条,就像魅力一样,将它们按正确的顺序排列。

提前谢谢你

@gbernardi:
\text在amsmath包中定义。试着在序言中包含“\ uspackage {amsmath}”,这应该能解决你的问题。

H VHA

@gbernardi
你试过下面的方法吗?

情节(x, y)
legend({'你的文本在这里'},'解释器','乳胶')

@gbernardi
Matlab2tikz试图聪明地处理标签和标签的外观,但有时可能会失败。尝试将'parseStrings'设置为false。
如果这没有帮助,一个bug报告和一个小的示例代码https://github.com/nschloe/matlab2tikz/issues不胜感激。

gbernardi

很棒的工具,但我遇到了传说的问题。
我在matlab中的图例命令中所写的内容包含在$\text{}$环境中,\text{}部分在编译时给出了一个错误…你知道为什么吗?

说真的,我刚刚在2010年的文件中看到了我之前的评级,我向你保证那是意外!我通常不给文件评分,更别说无缘无故给一星了!这是一个伟大的工具,所以我希望我目前的评级以某种方式纠正事情。有没有办法删除我之前的评分之类的?谢谢分享!

伙计们,我无法转换具有不均匀的最小值和最大值的错误条。它说,目前这段代码只能转换最小值和最大值。有人找到解决办法了吗?提前谢谢你。
阿西夫

发牢骚

克里斯

优秀的剧本,轻松制作专业的情节。谢谢!

克里斯

你好,
我和尼古拉斯·哈勒基有同样的问题。你可以插入\pgfplotsset{scaled ticks=base 10:0}在你的文档的序言,它应该做的技巧(至少如果你使用datetick)。

干杯

高山

卡洛斯

JoseMauricio

Tor英奇

大家好,

我发现了另一个问题:

matlab2tikz无法处理>>plot3(xvector,yvector,zvector)<<文件。

即使是最简单的例子也不起作用:

% ###################################################################

X =兰特(100,1)*4-2;
Y = rand(100,1)*4-2;
Z = x.*exp(-x.²-y.²);

构造插值
% F = TriScatteredInterp(x,y,z,'最近');
% F = TriScatteredInterp(x,y,z,'natural');
F = TriScatteredInterp(x,y,z,'linear');

在位置(qx, qy), qz处计算插值
%是这些位置的对应值。
Ti = -2:.25:2;
[qx,qy] = meshgrid(ti,ti);
qz = F(qx,qy);

抓住
冲浪(qx, qy,求出)
plot3 (x, y, z,“o”)
视图(gca,[-69] 14日);
推迟

matlab2tikz(“testplot3D。tikz', 'height', '\plothoehe', 'width', '\plotbreite', 'parseStrings', false);

% ###################################################################

Truong

作诗者杨

与matlabfrag相比,我更喜欢matlab2tikz。tikz输出的质量是一流的!伟大的工作!谢谢!

它确实存在,被称为“minimumPointsDistance”。

K Prakasam

Matfig2pgf代码有一个选项来减少数据点的数量。你能在你的代码中也包含同样的算法吗?

是的,我需要MATLAB代码(例如通过邮件)。也就是说,警告似乎是明确的:“颜色条的大小可能需要调整。”这可能是有原因的。;)

3 d绘图

我有一个开放的图和输入:

matlab2tikz(“myfile。tikz', 'height', '10cm', 'width', '5mm' );

...适用于2d图。

...或is it the plot-code you're asking for?

示例代码?

3 d绘图

嗨。

谢谢。非常有用的脚本。但是当颜色条显示时,我的3d图有一个问题……我得到了错误信息:

“警告:x轴和y轴的物理单位不重合(x: mm;y:厘米)。颜色条的大小
可能需要调整。”

错误在==> matlab2tikz>getAxisTicks at 3852
s = str2double(tickLabel{k});"

有什么解决办法吗?提前谢谢你。

Dimitris K

伟大的工作!谢谢

蒂姆:简单。只使用

>> matlab2tikz('myfile. ')tikz', 'height', '\figureheight', 'width', '\figurewidth' );

在LaTeX文档中设置\figureheight和\figurewidth。
请参阅README。

你能不能让数字的大小总是一样的,这样就更容易在报告中控制它的一致性。

谢谢,干得好!

人们总是对matlab2tikz的补丁感兴趣!你可以在GitHub上发送一个拉请求,或者通过邮件发送补丁(使用git format-patch来获得正确的信用),或者在GitHub上创建一个拉请求。哪种方式我都不介意。

埃克

三件事:
1.:一段很棒的代码。真的节省了很多时间和工作。
2.:我通过“\pgfplotset{}”在我的序言中设置宽度和高度,只是改变了一些情节。Matlab2tikz总是输出宽度和高度参数,在这种情况下不是很有用。
(刚刚找到Wiki,它提供了一个很好的工作https://github.com/nschloe/matlab2tikz/wiki- "\newlength和\setlength")
3.:我增加了对“传奇”万博1manbetx的支持。朝向”参数以及“Loaction=SouthOutside”和“Location=NorthOutside”,你对代码感兴趣吗?我应该寄到哪里?

你好赛,

#问题现在应该解决了;谢谢你的报告。
目前,我不认为pgfplots有办法以任何方式控制图例框的纵横比,但你可能想要浏览它的手册。如果你有什么发现,请告诉我!

第一次听起来不错。

一件事,如果我的xlabel是xlabel('# K')在matlab中,产生的文件是错误的(手动更改xlabel={# K}到xlabel={\# K})在tikz文件)。

如何保持图例的纵横比?

非常好的剧本!!到目前为止,我一直在使用MATLAB EPS导出,然后用Inkscape编辑并保存为PDF+LaTex解决方案,但这一个更简单,更好,因为它以优雅的方式解决了我以前解决方案的标签定位问题!
谢谢!

嗨,尼克,
再次感谢你的出色工作。

一些请求:
1.是否有可能有一个命令行开关,把所有的Matlab图例条目只是在{},而不是$$ + \text{}?我的传说大多是非公式的,所以如果它们以这种形状通过matlab2tikz,我可以更容易地格式化它们。

2.我建议把“定义自定义颜色”部分放在\begin{tikzpicture}之前,因为如果你在图标题中做图例(通过使用\label{}和\ref{}), LaTeX会报告一个错误,因为\definecolor只适用于tikzpicture。

3.相关2:是否有可能自动标记地块?例如\label{filename-p1}, \label{filename-p2},....

谢谢,
伊戈尔

嗨,尼克,
最好使用uiputfile的路径作为文件名(行206,212,218,…),这样文件就可以存储在当前文件夹之外的其他地方。

谢谢你!

我已经将我对嵌套函数drawText的修改通过电子邮件发送给您,以便处理使用Matlab text命令创建的文本对象中的问题。如果你同意这一点,你可以相应地更新你的代码,让我不必每次有新版本时都修改。谢谢。
穆赫塔尔

@Alexander Klein:我实现了一两件事,你可能想看看最新的版本。
对于将来的更改,最好提交bug报告https://github.com/nschloe/matlab2tikz/

文档可能不是一直都是最新的。
总的来说,它总是值得一看的https://github.com/nicki/matlab2tikz/
当然,源文件本身也列出了所有选项,所以您可以查看第125行ff。应该是不言自明的。

我不太明白你的意思。
2)你是指图像宽度吗?有'width'和'height'参数。
3)选项“mathmode”。

一般来说,如果你发现了一个bug或类似的bug,我可以更容易地在GitHub上跟踪它。

谢谢你,尼科,剧本是件艺术品。我是一个有经验的LaTeX用户(我曾经用LaTeX写过我的论文),并且非常熟悉MatLab(没有任何主要的绘图生成)。因此,当我找到您的代码时,您可以想象我当时是多么兴奋,因为我正在为报告生成构建脚本。这将是,很容易,我在这个文件交换中遇到的最好的脚本,如果我能找到如何:
1)删除x轴标签中的10^5(我也使用datetick,并将Mukhtar的建议添加到LaTeX序言中,但无济于事)。
2)预先定义线宽,图像纵横比,以及某种缩放参数,以便tikz中的输出宽度和高度参数,例如:

宽= 0.90 \ textwidth,
身高= 0.35 \ textheight

3)某种程度上理解我如何指定标题、轴标签、图例是否不能在LaTeX数学模式中解释(或者你建议我硬编码这个)?

也许这样的特性是受支持的(正如Petter所提到的)万博1manbetx,但是快速浏览m文件并没有给我一个很好的起点。

@Alexander Klein,我很想知道作者是否实施了你的改进?

谢谢大家所做的一切,
干杯!

培特

这是因为matlab2tikz用$..$包装了我的x和ylabels。我删除了这段代码,并得到了预期的结果。

dm

@Petter:你有一个xlabel中的空格不工作的示例代码?在我所有的数据中,它工作得很完美,所以我假设它与您的代码有关。

否则,你不使用\includegraphics与TikZ数字(除非你预编译为PDF或其他),但使用宽度/高度命令已经可用,将设置图形的尺寸(这些命令也记录在FEX的描述这里)。

D。

培特

xlabel中的空格似乎不起作用

培特

它似乎已经得到了支持,但没有被记录下来。万博1manbetx

培特

看起来不错,但我错过了保持纵横比和改变宽度的功能。例如,\ includegraphics[宽度= 3厘米]{形象}

帮助不包括可选参数。

大家好!

首先:感谢Schlömer先生的matlab2tikz。这是一个很棒的软件。

不幸的是,在64位Linux系统上使用Matlab 2009b 0.0.7版本时,我遇到了以下问题:
1.标签和标题不能由sprintf编写,因为它包含单元格。
2.barplot没有工作,因为有一个拼写错误(例如m2t缺失)
3.我需要画出时间差很小的信号。这就是pgfplots坐标精度不够的原因。
4.当绘制具有数千个数据点的数据序列时,写入文件需要几分钟(由于strcat和i=1的lopp:length(xData))

我已经对文件进行了更改,以解决这个问题:
1.例句:

如果iscell(标题)
标题=标题{:};
结束

2.对于我来说
barplotTotalNumber = barplotTotalNumber + 1;

m2t。barplotTotalNumber = m2t。barplotTotalNumber + 1;
帮助
3.我为脚本添加了一个选项,您可以在其中添加写入pgf文件时使用的格式字符串的精度
4.我用repmat结构替换了for循环,这大大减少了计算时间。

如果有人遇到同样的问题,我可以将此文件发送给Schlömer先生(如果他喜欢添加更改)。或者有没有更好的办法解决这个问题?

亲切的问候

亚历山大

dm

伊戈尔

工作好了!
谢谢!

Wondeful工具。今天,我试了一下,没有比这更好的了。我也遇到了同样的问题(烦人的x10^5),正如Paul所提到的,但这与malab2tikz无关。而是pgfplot处理标记标签的方式。不过,我找到了一个解决方案,我想分享并要求Nico将其包含在自述文件中。
将此添加到乳胶文档的序言中
\pgfplotsset{x tick label style={/pgf/number format/fixed}}
\pgfplotsset{y tick label style={/pgf/number format/fixed}}
当然,如果你喜欢x10^5的符号,你就不需要它了。

大家好!我叫Ngo Huy。我是胡志明工业大学的四年级学生。我有一个项目毕业处理器图像(产品分类在(闭链塞子)
帮帮我。我使用PLC s7200, matlab 7.1

保罗

你好,

神奇的工具!!非常感谢。

但我有一个恼人的问题。我从matlab序列日期导入坐标,然后使用xtick重新标记。工作良好,除非当pgf绘制图形时,在右下角有一个恼人的x10^5(这必须源于matlab的串行日期值)。

即,我拥有的代码是:

开始\ {tikzpicture}

开始\[%{轴}
视图= {0}{90},
仅标度轴,
宽度= \ figurewidth,
身高= \ figureheight,
xmin = 724642, xmax = 733408,
ymin = 0, ymax = 3.5,
xtick = {724642, 725373, 726103, 726834, 727564, 728295, 729025, 729756, 730486, 731217, 731947, 732678, 733408},
xticklabels ={84, 86, 88, 90, 92, 94, 96, 98, 00, 02、04、06、08年},

有人能帮我一下吗?

致以最亲切的问候
保罗

dm

优秀的工具,情节出来看起来很棒!

一个非常有用的包。我希望它能很快支持每一种情节类万博1manbetx型(特别是散点类型;-))!

我已经使用这个提交广泛地添加图形到我的乳胶文件和它的工作方式。感谢您的投稿!

如果你解释说需要上传pgf和pgfplots乳胶包,并在latex文档的序言中调用\usepackage{pgfplots},这将会更好。在那之后,它似乎可以正常工作。

更新

1.0.0.0

m2t历史上最大的更新;详细信息请参见https://github.com/matlab2tikz/matlab2tikz/blob/master/CHANGELOG.md

1.50.0.0

更新描述

1.49.0.0

更新GitHub存储库

1.48.0.0

更突出地展示贡献环节

1.47.0.0

添加GitHub链接

1.46.0.0

更新至0.4.7

1.45.0.0

更新至0.4.6

1.44.0.0

更新至0.4.5

1.43.0.0

更新至0.4.4

1.42.0.0

更新至0.4.3

1.40.0.0

更新标志

1.38.0.0

更新至0.4.2

1.36.0.0

更新至0.4.1

1.35.0.0

更新至0.4.0

1.34.0.0

更新至0.3.3

1.33.0.0

升级到0.3.2(这次是真的)

1.30.0.0

更新至0.3.0

MATLAB版本兼容性
使用R2014b创建
与任何版本兼容
平台的兼容性
窗户 macOS Linux