【matplotlib】可视化解决方案——如何调整计量单位和计量方法

概述

对于开展数据可视化实践而言,最关键的部分就是数据的有效展示。如果想要展示效果更加理想,就自然会涉及单位和刻度两方面。具体而言,单位是指坐标轴上一个单位的刻度线的距离的计量单位,可以有弧度、角度、厘米、英寸、秒和分钟。刻度则是指坐标轴刻度线的计量方法。可以有线性计量和、对数计量等方法。

单位的概念和我们平时使用的尺子的计量单位含义类似,只是单位的概念更加多元化一些,不光可以使用长度单位,也可以使用时间单位等其他单位,例如弧度、角度等。接下来本文将以两个示例来演示计量单位之间的转换。

示例

弧度和角度

通常来讲,弧度和角度是最频繁使用的计量单位。一般而言,展示弧度和角度的刻度标签的操作过于繁琐,实现起来很不方便。如果可以在数据可视化的过程中能够以代码指定计量单位,通过刻度标签进行展示,就可以使展示效果变得更加精细和清洗。下面的代码将会使用到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()

画图结果:

在这里插入图片描述

往期回顾

  1. 【matplotlib】可视化解决方案——如何实现图形的动画效果
  2. 【matplotlib】可视化解决方案——如何正确使用plot方法
  3. 【matplotlib】可视化解决方案——如何正确使用bar方法
  4. 【matplotlib】可视化解决方案——如何向画布中添加坐标轴
  5. 【matplotlib】可视化解决方案——如何正确使用matplotlib颜色系统
  6. 【matplotlib】可视化解决方案——如何实现画布局部放大功能
  7. 【matplotlib】可视化解决方案——如何更改matplotlib配置信息
  8. 【matplotlib】可视化解决方案——如何定制化网格
  9. 【matplotlib】可视化解决方案——如何向画布添加交叉直线
  10. 【matplotlib】可视化解决方案——如何解决matplotlib中文乱码问题

文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,相关的知识点也可进行分享,希望大家都能有所收获!!如果觉得我的文章写得还行,不妨支持一下。你的每一个转发、关注、点赞、评论都是对我最大的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猪猪家的大猪猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值