概述
对于开展数据可视化实践而言,最关键的部分就是数据的有效展示。如果想要展示效果更加理想,就自然会涉及单位和刻度两方面。具体而言,单位是指坐标轴上一个单位的刻度线的距离的计量单位,可以有弧度、角度、厘米、英寸、秒和分钟。刻度则是指坐标轴刻度线的计量方法。可以有线性计量和、对数计量等方法。
单位的概念和我们平时使用的尺子的计量单位含义类似,只是单位的概念更加多元化一些,不光可以使用长度单位,也可以使用时间单位等其他单位,例如弧度、角度等。接下来本文将以两个示例来演示计量单位之间的转换。
示例
弧度和角度
通常来讲,弧度和角度是最频繁使用的计量单位。一般而言,展示弧度和角度的刻度标签的操作过于繁琐,实现起来很不方便。如果可以在数据可视化的过程中能够以代码指定计量单位,通过刻度标签进行展示,就可以使展示效果变得更加精细和清洗。下面的代码将会使用到basic_units模块下的各个方法和类,该模块可以从 matplotlib 官网进行下载,官方链接。下载完成后和执行脚本放在同一目录下即可。示例完整代码如下:
import matplotlib.pyplot as plt
import numpy as np
from basic_units import radians, degrees, cos
x = np.linspace(0, 9.5, 500)
rad_x = [i * radians for i in x]
fig, ax = plt.subplots(2, 1)
ax[0].plot(rad_x, cos(rad_x), ls='-', lw=3, color='k', xunits=radians)
ax[0].set_xlabel("")
ax[1].plot(rad_x, cos(rad_x), ls='--', lw=3, color='cornflowerblue', xunits=degrees)
ax[1].set_xlabel("")
fig.subplots_adjust(hspace=0.3)
plt.show()
画图结果:
这里有两个重点第一个是借助
xunits
属性传递单位进而绘制标签;第一个重点是虽然弧度和角度我们可以自己计算,但是最好使用成熟的开源转换库。
厘米和英寸
长度计量单位中最常见的就是英寸和厘米,这两个也是 python 数据可视化中最常用的计量单位之一。由于二者可以相互转换,这意味着可以同时使用厘米和英寸。在具体实现上,厘米实例和英寸实例之间的转换通过实例方法 add_conversion_factor()
实现。实例的完整代码如下:
import matplotlib.pyplot as plt
import numpy as np
from basic_units import cm, inch
x = np.linspace(0, 10, 6)
cm_x = [i * cm for i in x]
fig, ax = plt.subplots(2, 2)
ax[0, 0].plot(cm_x, cm_x, ls='-', lw=3, color='k', xunits=cm, yunits=cm)
ax[0, 0].set_xlabel("")
ax[0, 0].set_ylabel("")
ax[0, 0].set_title("x_unit:cm, y_unit:cm")
ax[0, 1].plot(cm_x, cm_x, ls='--', lw=3, color='cornflowerblue', xunits=cm, yunits=inch)
ax[0, 1].set_xlabel("")
ax[0, 1].set_ylabel("")
ax[0, 1].set_title("x_unit:cm, y_unit:inch")
ax[1, 0].plot(cm_x, cm_x, ls='-.', lw=3, color='gold', xunits=inch, yunits=cm)
ax[1, 0].set_xlabel("")
ax[1, 0].set_ylabel("")
ax[1, 0].set_title("x_unit:inch, y_unit:cm")
ax[1, 1].plot(cm_x, cm_x, ls=':', lw=3, color='purple', xunits=inch, yunits=inch)
ax[1, 1].set_xlabel("")
ax[1, 1].set_ylabel("")
ax[1, 1].set_title("x_unit:inch, y_unit:inch")
fig.subplots_adjust(hspace=0.3)
plt.show()
画图结果:
往期回顾
- 【matplotlib】可视化解决方案——如何实现图形的动画效果
- 【matplotlib】可视化解决方案——如何正确使用plot方法
- 【matplotlib】可视化解决方案——如何正确使用bar方法
- 【matplotlib】可视化解决方案——如何向画布中添加坐标轴
- 【matplotlib】可视化解决方案——如何正确使用matplotlib颜色系统
- 【matplotlib】可视化解决方案——如何实现画布局部放大功能
- 【matplotlib】可视化解决方案——如何更改matplotlib配置信息
- 【matplotlib】可视化解决方案——如何定制化网格
- 【matplotlib】可视化解决方案——如何向画布添加交叉直线
- 【matplotlib】可视化解决方案——如何解决matplotlib中文乱码问题
文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,相关的知识点也可进行分享,希望大家都能有所收获!!如果觉得我的文章写得还行,不妨支持一下。你的每一个转发、关注、点赞、评论都是对我最大的支持!