制作漂亮的图表
今天我要介绍一位客座博主,Doke二郎(邮箱:Jiro.Doke@mathworks.com),他是The MathWorks的一名应用工程师。他在他的生活中使用MATLAB在MathWorks之前,和他的一个
兴趣是数据可视化。
内容
在我的研究生工作中,我广泛使用MATLAB进行分析和可视化。很多时候,我创造的情节
用于我的出版物。就在那时,我开始探索Handle Graphics自定义MATLAB的灵活性
以创建出版质量的图形。最终,我几乎只能用MATLAB来画我的图。
让我一步一步地告诉你我是如何做到的。我使用了一些编造的数据,但情节非常相似
到我为我的研究生成的图像。
加载数据
首先,您可以下载数据.
负载数据
创建基本情节
首先,我绘制数据以创建粗略的可视化
图(“单位”,“像素”,...“位置”, [100 100 500 375]);持有在;hFit = line(xfit, yfit);hE = errorbar(xdata_m, ydata_m, ydata_s);hData = line(xVdata, yVdata);hModel = line(xmodel, ymodel);hCI(1) = line(xmodel, ymodel);hCI(2) = line(xmodel, ymodelU);
调整线路属性(功能性)
接下来,我对我的情节进行第一轮修改。在这一点上,我还不担心美学。
集(hFit,...“颜色”, [0 0 .5]);集(他...“线型”,“没有”,...“标记”,“。”,...“颜色”,(。3..3..3.] ); set(hData ,...“线型”,“没有”,...“标记”,“。”);集(hModel,...“线型”,“——”,...“颜色”,“r”);集(hCI (1),...“线型”,“-”。,...“颜色”, [0.5 0]);集(人机交互(2),...“线型”,“-”。,...“颜色”, [0.5 0]);
调整线条属性(美学)
为了提高它的发布质量,我对行属性做了以下更改,包括错误条宽度。在
在我看来,使用更粗的线条和更大的标记可以极大地改善图像的“外观”。这是非常主观的,但是
我根据图表上的数据量来选择它们。我选择了适当的“拥挤度”(黑白空间的平衡):
集(hFit,...“线宽”, 2);集(他...“线宽”, 1,...“标记”,“o”,...“MarkerSize”, 6,...“MarkerEdgeColor”,(。2.2.2] ,...“MarkerFaceColor”,(。7.7.7] ); set(hData ,...“标记”,“o”,...“MarkerSize”, 5,...“MarkerEdgeColor”,“没有”,...“MarkerFaceColor”,(。75.751] ); set(hModel ,...“线宽”, 1.5);集(hCI (1),...“线宽”, 1.5);集(人机交互(2),...“线宽”, 1.5);%调整错误条宽度hE_c =...get(他“孩子”);errorbarXData =...get (hE_c (2),“XData”);errorbarXData(9:结束)=...errorbarXData(1:9:end) - 0.2;errorbarXData(七章:结束)=....errorbarXData(1:9:end) - 0.2;errorbarXData(9:结束)=...errorbarXData(1:9:end) + 0.2;errorbarXData(9:结束)=...errorbarXData(1:9:end) + 0.2;集(hE_c (2),“XData”, errorbarXData);
添加图例和标签
没有很好地注释的情节是不完整的。
hTitle = title (“我的出版物-高质量图形”);hXLabel = xlabel(的长度(米));hYLabel = ylabel(的质量(公斤));hText = text(10,800,...sprintf ('\\it{C = %0.1g \\pm %0.1g (CI)}',...c, cint (2) - c));hLegend =传说(...[hE, hFit, hData, hModel, hCI(1)],...'Data (\mu \pm \sigma)',...'Fit (\it{C x^3})',...验证数据的,...'模型(\it{C x^3})',...95%置信区间的,...“位置”,“西北”);
调整字体和轴的属性
由于许多出版物都接受EPS格式,所以我选择PostScript和Ghostscript支持的字体。金宝app的东西
不支持的金宝app将被Courier替换。我还定义了标记位置,特别是当默认值太拥挤时。
集合(gca,...“字体名”,“Helvetica”);set([hTitle, hXLabel, hYLabel, hText],...“字体名”,“先锋”);set([hLegend, gca],...“字形大小”, 8);set([hXLabel, hYLabel, hText],...“字形大小”, 10);set(hTitle,...“字形大小”, 12,...“FontWeight”,“大胆”);集(gca),...“盒子”,“关闭”,...“TickDir”,“出”,...“TickLength”,(。02.02] ,...“XMinorTick”,“上”,...“YMinorTick”,“上”,...“YGrid”,“上”,...“XColor”,(。3..3..3.],...“YColor”,(。3..3..3.],...“YTick”0:500:2500,...“线宽”, 1);
导出至EPS
我设置PaperPositionMode以使导出的图形看起来与屏幕上的一样。
集(gcf,“PaperPositionMode”,“汽车”);打印-depsc2finalPlot1.eps关闭;
后处理
看起来很棒!我可能想要改变的一件事是虚线和虚线的外观。注意这些点
太小了。因此,我编写了一个简单的函数,进入EPS文件并修改行定义。我已将
函数,fixPSlinestyle,在文件交换。
fixPSlinestyle (“finalPlot1.eps”,“finalPlot2.eps”);
就这样。我已经自动化了创建出版质量图形的过程。处理图形为您提供图形外观的高级控制。如果你不知道,MATLAB允许你快速获取MATLAB脚本
并发布格式化报告(HTML, Word, LaTeX, XML, PPT),其中的数字自动转换为各种图形格式,
包括每股收益。本文档是使用发布.
你的例子
告诉我们在这里关于你用Handle Graphics做的一些很酷的事情,让你的图形看起来更漂亮。
发布与MATLAB®7.5