matplotlib可视化系列之【排版】

排版虽然只是绘图中的辅助功能,但是好的排版能够提高图形的表现力。
让人一眼看出图形要表达的内容和数据,而不用去费力的睁大眼睛去图中查找。

如果说 matplotlib的坐标系统,各种基础元素,包括柱状图,折线图,散点图等它的硬实力,
那么,排版就是 matplotlib 的软实力,结合排版,能让分析结果给人一个良好的第一印象,增强别人对分析结果的信任。

排版是个很大的话题,涉及很多细节,这里只从三个方面来改善排版,相比于直接绘制图形,先改善这三个方面,就能极大提高可视化的清晰度。

层次

绘图和写文章一样,平铺直叙对读者很难有吸引力,跌宕起伏的情节才是吸引读者的法宝。
绘图时,仅仅将各个元素展示出来就像一篇记录流水账的文章,索然无味。

通过调整元素的位置,大小和粗细,也可以让图形展示出完全不同的效果,比如下面2个图:
image.png
代码参考:https://github.com/rougier/scientific-visualization-book/blob/master/code/typography/typography-matters.py

相对于第一个图,第二个图通过调整 matters 的大小和位置,以及坐标轴刻度的大小和粗细等,明显让人感觉到第二个图更加的精致。

字体

matplotlib 支持调整绘图中的字体,选择那种字体没有明确的原则,可以根据显示的内容,多试试几种字体,看看哪种看的更加顺眼。

比如,对于数学公式来说,因为显示的内容比较复杂,清晰度比显示普通文字更加重要。
下面是几种字体对数学公式的显示,体会体会其中的差别。
代码参考:https://github.com/rougier/scientific-visualization-book/blob/master/code/typography/typography-math-stacks.py
image.png

一般会选择和图形中主要字体类似的字体来显示数学公式。

易辨认性

易辨认是很抽象的概念,具体来说,先做到两点。
一是能从背景中清晰的看到文字。比如下面的示例:
image.png
上面的图形中都有 Read me 几个字,第三排给文字加上背景,第四排给文字加了描边。
这样明显比前两排的文字显示清晰很多。

另一个提高易辨认性的方法则是和图形结合的文字可以随着图形的变换来显示,这样可以一眼看出数据表示的是图形哪部分的内容,比如:
image.png

图中的文字随着等高线来显示,不同说明就知道数值代表的是等高线的数据。

但是文字的比例和图形的比例一样,看上去文字有点偏小,
而且数据都挤在一起,显示在等高线的同样位置。需要仔细辨认一下才能看出各个数值。

下面的图调大了显示文字,并且让数值在等高线上错开显示,一下就提高了整个图形的易辨认性。
image.png
大家可以体会下2个图的差别。

代码参见:https://github.com/rougier/scientific-visualization-book/blob/master/code/typography/typography-text-path.py

总结

排版的细节如果考究起来是永无止境的,对于完美排版的看法也是见仁见智,并没有完全统一的标准。

这里讨论的几个点主要从提高清晰度的角度出发,通过尽量简单的几个改进,让我们绘制的图形更加的专业。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:matplotlib可视化系列之【排版】 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 【manim动画教程】–目录(完结)

    manim是一个生成数学教学视频的动画引擎。它用编程的方式创建精美的数学动画,让数学更加易懂。 本教程简单介绍了 manim 的基本使用方式,基于 v0.17.2 版本 manim 安装 manim是基于python语言开发的开源框架,是由 3blue1brown 开发的。 本来是他们自己用来制作数学视频用的,因为其友好的API和漂亮的UI效果,在开源之后,…

    python 2023年4月22日
    00
  • 【manim动画教程】–相机

    相机(Camera)在二维的场景下使用不多,一般在3D场景中提及的比较多。相机相当于我们看动画的视角,简单来理解的话,相当于我们的眼睛(实际情况会复杂一些,相机还有其他一些辅助功能)。 默认的相机焦点在屏幕的中心位置,相机默认是以俯视的视角查看所有的元素。之前的介绍的常用动画效果和高级动画效果,都没有对相机进行调整过,所以,是通过移动和变换各个元素来实现动画…

    python 2023年4月19日
    00
  • 【manim动画教程】– 坐标系

    没有引入坐标系之前,在绘制图形时,也有一个隐含的坐标系,它和屏幕的像素相关。 比如,我们之前示例中的各个图形,屏幕的中心就是坐标原点([0, 0]),横轴坐标的范围大概是 [-3.5, 3.5],纵轴的坐标范围大概是 [-4, 4],这个范围与设置的视频分辨率有关,分辨率设置的越高的话,坐标范围越大。 不知是否还记得,之前的文章中绘制的线或者多边形(比如这个…

    python 2023年4月18日
    00
  • matplotlib可视化系列之【颜色】

    颜色和排版一样,看似简单,其实非常复杂,往大了说,涉及到艺术和品味,不像数学公式,物理定理那样,是非分明。 但是,对 matplotlib 中的颜色有些基本的了解,可以让绘出的图形颜色不至于太突兀。虽不能说选出完美的颜色搭配,至少是看着舒服,醒目的颜色搭配。 颜色的种类 颜色一般用 RGB 来表示,颜色空间主要有3种: RGB sRGB Lab 3种颜色空间…

    2023年4月2日
    00
  • 【manim】之滚动字幕

    概要 manim 是一个做数学视频的 python 库,这个库功能非常强大。具体可以参考官方介绍:https://github.com/ManimCommunity/manim/ 它本身只是封装数学相关的几何体和一些基础动画,所以,制作视频时,需要进一步封装更复杂的动画来满足视频的要求。最近做的一个视频有很多公式推导,所以封装了一个滚动字幕的组件。 代码封装…

    2023年4月2日
    00
  • 【pandas基础】–数据检索

    pandas的数据检索功能是其最基础也是最重要的功能之一。 pandas中最常用的几种数据过滤方式如下: 行列过滤:选取指定的行或者列 条件过滤:对列的数据设置过滤条件 函数过滤:通过函数设置更加复杂的过滤条件 本篇所有示例所使用的测试数据如下: import pandas as pd import numpy as np fp = “http://data…

    python 2023年5月10日
    00
  • 【manim】之圆规动画

    概要 前端时间做尺规作图相关的动画的时候,封装了一个圆规的动画,顺便研究了下 manim 库的动画函数。 manim 本身就是做动画的库,所以,基于它封装自定义的动画非常方便。 动画原理 对于单个的元素,manim本身就提供了非常多的动画函数。比如:创建/消除的动画,移动元素的动画,旋转元素的动画等等,具体可以参考: Animations 如果是做一些简单的…

    2023年3月31日
    00
  • 【pandas基础】–核心数据结构

    pandas中用来承载数据的两个最重要的结构分别是: Series:相当于增强版的一维数组 DataFrame:相当于增强版的二维数组 pandas最大的优势在于处理表格类数据,如果数据维度超过二维,一般我们会使用另一个 python的库 numpy。 本篇主要介绍这两种核心数据结构的创建方式。 1. Series pandas的Series是一种带有标签索…

    python 2023年5月8日
    00
合作推广
合作推广
分享本页
返回顶部