答案 0 :(得分:3)
此问题将避免讲解OP的图形最佳实践,而只是尝试按照要求回答该问题。我个人同意所提出的一些问题,但将其留给OP来寻找有关数据可视化和图形美学的资源。 (根据记录,我不喜欢该图表。)
资源:
MATLAB Plot Gallery描述了一系列可能对您有帮助的图表和调整。对于高质量,专业外观的图形,向下滚动到 Advanced Plots 以查看源代码和结果图形。
可用Types of MATLAB Plots的图形概述。
您还可以制作基本图,然后使用MATLAB的图编辑器通过图形界面自定义属性。完成后,点击文件->生成代码,您将看到一种可能的方法来对该图形进行编码。当您知道如何通过界面执行某些操作但希望将来编写脚本时,这将很有帮助。
我知道其中一些链接可能最终会失效。请随时发表评论
示例:
我不是专家。我通过查看文档,绘图源代码以及使用各种绘图组件的属性来学习此答案中的所有内容。
% 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
答案 1 :(得分:1)
创建一个函数,该函数采用数据矩阵,其中每一行代表您要绘制的信号。 定义一些您想用于绘图的样式。在您的示例图中,前两个是“ 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命令。
如果要在出版物中使用这些图表,请注意以下事实:大多数出版物都是黑白的,并且如果图表没有上色,则图表应该是可区分的事件(我怀疑上面的图表会是彩色的)。我一直认为,无需手动修改,在代码中进行所有格式化都是一个好主意。否则,您可能会发现必须在提交论文之前不久的凌晨4点更新出版物中的所有8个地块。如果您运行一些模拟并且所有格式均已编写代码,则只需执行格式脚本并自动how to save a picture from code保存绘图即可,最好保存为eps格式。