样式和布局

要想图表美观,除了配色渲染外,图表的样式和布局也是重要的影响因素。样式指的是图表元素以什么样的形式呈现,比如是否加图框、绘图区背景怎么设置、坐标轴上是否显示刻度线、是否显示网格等。布局指的是图表中图形元素怎么摆放、它们之间的间隔等。布局需要遵守一些基本的审美原则,如留白、主次、疏密和取舍等。

MATLAB和Python默认图表样式的比较

MATLAB是科学计算语言,在绘图方面不是很讲究,相反,Python在这方面就好很多。为了比较二者绘图相同图表时使用的默认图表样式,下面使用相同数据分别绘制简单柱状图和堆叠面积图。

图1-47和图1-48是使用相同数据,分别用MATLAB和Python绘制的简单柱状图的默认效果。图1-49和图1-50是使用相同数据,分别用MATLAB和Python绘制的堆叠面积图的默认效果。

Document Image Document Image
\[\]

图1-47 用MATLAB绘简单柱状图 图1-48 用Python绘简单柱状图

Document Image Document Image
\[\]

图1-49 用MATLAB绘堆叠面积图 图1-50 用Python绘堆叠面积图

比较后不难发现,默认时用Python绘制的图表更美观更大气。这种差别在很多细节上都有呈现,包括使用的颜色、图表本身与坐标轴线之间的间隔、图例默认时是否半透明等。当然,颜色、样式和布局等都是可以调整的,对MATLAB生成的默认图表进行美化也是完全有必要的。

留白

人生忌满,绘图亦如是。传统审美认为,不管画画还是书法,甚至文章的排版,内容都不要占满整个稿纸或页面,而是要在四周留出适当的空白。

用MATLAB绘图时,经常会有类似图1-47中出现的“顶天立地”的情况,最长的柱形在绘图区高度方向上占满了。这时候给柱状图添加数据标签,最高柱形的标签会显示在图框外面。同样,绘线形图也会出现类似情况,当线形图的顶点直接落在坐标轴上时,如果显示该顶点的标记,标记会直接画在坐标轴上,有一半显示在图框外了。

这时候可以通过改变坐标轴的取值范围进行调整。比如图1-47,高度方向上可以通过改变y轴的取值范围进行调整,如下面代码所示:

code.matlab
%省略部分代码
ylim([0(max(y))*1.05])

执行代码生成图1-51。

Document Image
\[\]

图1-51 设置留白

主次

绘图时要把主要的内容放在突出的位置,背景、图例、色条等附属零部件不能喧宾夺主。图1-52中,左图网格效果稠密繁复,通过修改网格线属性变成右图的样子,明显清爽很多。

Document Image Document Image
\[\]

图1-52 图表主次1

MATLAB三维图表中经常可以看到类似图1-53左图中的大色条,即使图较小时也这样。很明显,在这里色条成了显眼包,吸引了读者更多的注意力。使用色条对象的Position属性,可以改变色条的显示位置和大小。修改后如图1-53图中右图所示。

Document Image Document Image
\[\]

图1-53 图表主次2

疏密

1.4.2小节讲了MATLAB柱状图y轴方向上要注意留白,在x轴方向上还需要注意疏密问题,即柱状图的条形之间的距离和分组之间的距离要合适。

有的期刊对图表有标注字数的要求,要求标注字数不能超过多少字。标注字数太多,或者标注太多,都会影响图表的美观。

取舍

绘图时,没有必要把所有信息都添加到图表上。尽管出发点是好的,是希望图表能反映尽可能多的信息。但是当美观和实用起了冲突,需要进行取舍。

图1-54中,左图给每条等值线都添加了标签。因为等值线水平比较大,标签出现大量的重叠,影响了图表的美观和使用。重新绘制等值线图,在保证差不多水平数的情况下,对等值线进行等间隔标注,这样避免了标签重叠问题。效果如图1-54中右图所示。

Document Image Document Image
\[\]

图1-54 取舍

图表样式

把好看的图表做成样式模板,下次绘制时可以直接套用。在MATLAB中可以自己创建图表样式。

图表样式中,首先是坐标系的样式。图1-55中为常见的两种二维坐标系样式。左图中显示了次级刻度线,添加了主网格;右图中将绘图区的颜色设置为黑色,添加白色主网格,坐标轴刻度线向外伸出。关于坐标系的设置,第3章有比较详细的介绍。

Document Image Document Image
\[\]

图1-55 坐标系的样式

其次是图表的样式,包括图表中图形元素的形状、颜色、线型、标记、大小、间隔等。

最后是图表元素的样式,包括绘图区、标题、图例、色条等的位置、大小和属性设置。图表元素的设置请参见第3章。