您是否知道在绘图中绘制任意样条线或线条的简单方法?我有一个我在powerpoint中创建的具有或多或少任意样条曲线(蓝色)的图,但我现在想在MATLAB中做同样的事情,因为在最终的绘图输出中有更好的外观。
我现在想知道我是否必须自己手动“找到”数据值以绘制某种样条曲线(看起来大致类似于下面的蓝色曲线),或者是否有一个工具我可以简单地插入一些以交互方式指向一个情节,并通过它创建一条曲线来创建类似的东西!?
绿色和红色的线条我可以自己弄清楚(可能还需要手动绘制它们,对吗)?!?
提前致谢!
修改
好吧,我在MATLAB中找到了一种方法来实现一个很好的样条:使用splinetool
,然后使用一个例子或导入一些数据然后你可以交互式地添加和删除点,直到你的样条看起来大致应该这样。然后文件 - >打印到图,然后工具 - >编辑图!然后,您可以删除不需要的所有内容,添加标题,xlabel和ylabel等,然后将其导出到乳胶,例如matlab2tikz :-)非常好的东西!!
答案 0 :(得分:1)
根据目的,为论文打印好的图,我有一些超出Matlab的建议。
1)像往常一样绘制所有内容,你得到一个数字句柄和一个轴句柄
h = figure( ... )
a = gca
2)使用图形窗口的data cursor
功能,交互式插入后续样条线的基点。您可以通过右键单击来添加其他点。
t = linspace(0,2*pi,1000);
[x y] = deal(sin(t),cos(t))
稍后您将删除Illustrator / Inkscape中数据提示的“可视”部分,如果您只想保持矢量图形的锚点以捕捉样条线。
还有可能自定义数据提示:Tutorial at Matlab Central
3)我曾经写过一个函数来很好地将Matlab图形绘制为基于矢量图形的PDF。您可以指定高度,宽度以及您想要的白色边距。您只需要传递图形和轴柄以及名称:
function saveFigure( fig_handle, axes_handle, name , height , width , margin)
set(axes_handle,'LooseInset',get(gca,'TightInset'));
set(fig_handle, 'Units','centimeters','PaperUnits','centimeters')
% the last two parameters of 'Position' define the figure size
set(fig_handle,'Position',[-margin -margin width height],...
'PaperPosition',[0 0 width+margin height+margin],...
'PaperSize',[width+margin height+margin],...
'PaperPositionMode','auto',...
'InvertHardcopy', 'on',...
'Renderer','painters'... %recommended if there are no alphamaps
);
saveas(fig_handle,name,'pdf')
end
4)您可以获得可直接用于 Latex 的PDF,以便在MS Office中使用'emf'
(
增强的元文件)而不是'pdf'
。使用 Adobe Illustrator (最好提供图层)或 Inkskape (开源)打开此文件。
5)数据提示被识别为图形对象,您可以捕获它们并在它们上绘制样条线。对于Illustrator,我建议将样条曲线放在另一层而不是实际图形中。稍后您可以交换图形并为样条线提供新的锚点。在Inkscape中,您可以使用分组功能将所有内容保持在一起。
6)我会说你在一个只有Matlab解决方案上节省了大量时间。好看!