这个问题将避免在OP上讲授关于图形的最佳实践,并且只是试图回答所提出的问题。我个人同意所提出的一些问题,但请将其留给OP,以寻求有关数据可视化和图形美学的资源。 (为了记录,我不是图表的粉丝。)
资源:
我意识到其中一些链接可能最终会过期。如果他们这样做,请随时发表评论
例: 我不是专家。我通过查看文档,绘制源代码以及使用各种绘图组件的属性来学习这个答案中的所有内容。
% Functions of Interest % MATLAB 2018a
fh=@(x) a + a*sin(b*x) + 1-exp(-b*x);
gh=@(x) a + (a/b)*cos(c*x);
a = 20;
b = .3;
c = .2;
% Plot
X = (0:.01:25)';
figure, hold on
p(1) = plot(X,fh(X),'r-','DisplayName','Excitation')
p(2) = plot(X,gh(X),'b-','DisplayName','Recovery')
% legend('show') % Optional legend (omitted here since we're adding text)
xlabel('X')
ylabel('Y')
title('Particle Displacement')
% Options
ha = gca;
box on
grid on
ylim([-80 100])
set(ha,'GridLineStyle','--') % use ':' for dots
t(1) = text(3.5,80,'excitation')
t(2) = text(12,20,'recovery')
for k = 1:2
p(k).LineWidth = 2.2;
t(k).FontWeight = 'bold';
t(k).FontSize = 12;
t(k).FontName = 'Arial';
end
创建一个函数,该函数采用数据矩阵,其中每行代表您要绘制的信号。定义要用于绘图的一些样式。在你的示例图中,前两个是'bo'和'rx'。只需遍历您的行并使用不同的样式绘制每一行,然后使用命令“hold on;”
function fancyplot(xaxis, matrix)
figure;
style = {'bo', 'rx', 'k.'}; # and so on
for r = 1:size(matrix, 1)
plot(xaxis, matrix(r,:), style{r});
hold on;
end
end
编写另一个脚本,在绘制或将其添加到上面的函数后立即执行。在此脚本中,使用以下方法来控制轴的限制
将它们设置为您绘制的数据的最小值/最大值。
要在图中添加文本,请使用Text命令。
如果你想在出版物中使用这些图,请注意大多数出版物都是黑白的,如果它们没有着色,你的图形应该是可区分的事件(我怀疑上面的那些)。我一直认为,在没有手动修补的情况下,在代码中进行所有格式化都是一个好主意。否则,您可能会发现必须在提交论文前不久更新出版物中的所有8个图。如果您运行一些模拟并且所有格式都在代码中,您只需执行格式化脚本并自动保存图表how to save a picture from code,最好是eps格式。