【matplotlib】可视化解决方案——如何设置坐标系计量方法

概述

坐标轴刻度线的计量方法有很多种,这里明确一下,坐标轴刻度线的计量方法是指使用的坐标系类型,例如极坐标系。一般情况下最长使用的是线性计量方法,如果遇到特殊情况,我们还可能使用对数计量、几率对数计量和对称式对数计量等方法。比方说可视化数据变化范围非常广的时候,如果使用常规坐标系,那么很有可能导致数据密集显示,甚至无法看到数据的变化趋势,这时,使用对数计量方法就可以对图形进行更好的展示。直白一点设置计量方法就是通过一种变换将 X 轴或者 Y 轴的刻度数值进行转换,即 y n e w = f ( y o l d ) y_{new} = f(y_{old}) ynew=f(yold)

示例

首先我们看一下为什么要有不同的计量方法,示例代码如下:

import numpy as np  
import matplotlib.pyplot as plt  
x = np.linspace(1, 10, 1024)  
plt.yscale('log')  
plt.plot(x, x, c = 'c', lw = 2., label = r'$f(x)=x$')  
plt.plot(x, 10 ** x, c = 'y', ls = '--', lw = 2., label = r'$f(x)=e^x$')  
plt.plot(x, np.log(x), c = 'm', lw = 2., label = r'$f(x)=\log(x)$')  
plt.yscale('linear')
plt.legend()  
plt.show()

画图结果:

在这里插入图片描述

因为线性计量方法表示的是变化的绝对值,所以使用该计量方法会显得很乱,无法突出我们的重点。而对数坐标表示的是变化的相对强度,所以我们进行一些修改:

import numpy as np  
import matplotlib.pyplot as plt  
x = np.linspace(1, 10, 1024)  
plt.yscale('log')  
plt.plot(x, x, c = 'c', lw = 2., label = r'$f(x)=x$')  
plt.plot(x, 10 ** x, c = 'y', ls = '--', lw = 2., label = r'$f(x)=e^x$')  
plt.plot(x, np.log(x), c = 'm', lw = 2., label = r'$f(x)=\log(x)$')  
plt.yscale('log')  
plt.legend()  
plt.show()

画图结果如下,这样我们就能看出三个曲线的变化趋势了。

在这里插入图片描述

接下里,本文将使用多种计量方法绘制图形并将他们放置在不同的子区中,对照讲解他们的联系和区别,帮助大家更好的理解每种计量方法使用的场合和原理。完整代码如下:

import matplotlib.pyplot as plt  
import numpy as np  
  
x = np.linspace(1, 10, 100)  
y1 = [2 ** j for j in x]  
y2 = [0.09 * j for j in x]  
  
fig, ax = plt.subplots(2, 2)  
  
# 线性  
ax[0, 0].plot(x, y1)  
ax[0, 0].set_yscale('linear')  
ax[0, 0].set_title("linear")  
ax[0, 0].grid(True, ls='-', lw=1, color='gray')  
  
# log  
ax[0, 1].plot(x, y1)  
ax[0, 1].set_yscale('log')  
ax[0, 1].set_title("log")  
ax[0, 1].grid(True, ls='-', lw=1, color='gray')  
  
# logit  
ax[1, 0].plot(x, y2)  
ax[1, 0].set_yscale('logit')  
ax[1, 0].set_title("logit")  
ax[1, 0].grid(True, ls='-', lw=1, color='gray')  
ax[1, 0].set_ylim(0.1, 0.9)  
  
# symlog  
ax[1, 1].plot(x, y2)  
ax[1, 1].set_yscale('symlog')  
ax[1, 1].set_title("symlog")  
ax[1, 1].grid(True, ls='-', lw=1, color='gray')  
  
fig.subplots_adjust(hspace=0.3, wspace=0.3)  
plt.show()

画图结果:

在这里插入图片描述

一般采用两种方式设置计量方法,第一种 plt.yscale();第二种针对 Axes 对象,使用 Axes.set_yscale() 方法进行设置,常用的计量方法有:

  1. linear:线性计量方法,这是 matplotlib 中的默认计量方法,反应的是变化的绝对值;
  2. log:对数计量方法,它会将 Y 轴上的刻度标签以 10 为底进行对数变换。变换完成后的 Y 轴刻度之间的距离不再均匀;
  3. logit:logit 刻度与线性刻度之间的变换公式为 y n e w = log ⁡ 10 ( y 1 − y ) y_{new}=\log _{10} (\frac{y}{1-y}) ynew=log10(1yy)
  4. symlog:symlog 刻度线之间的距离呈现出关于 y=0 对称的特征,即刻度线的数值绝对值完全相同。

每一种计量方法的特点各不相同,需要根据数据的特点和使用者想表达的内容进行选择。除了给 Y 轴设置计量方法,也可以给 X 轴设置计量方法,用到的方法还是 plt.xscale()Axes.set_xscale()

往期回顾

  1. 【matplotlib】可视化解决方案——如何正确使用文本注释
  2. 【matplotlib】可视化解决方案——如何调整计量单位和计量方法
  3. 【matplotlib】可视化解决方案——如何实现图形的动画效果
  4. 【matplotlib】可视化解决方案——如何正确使用plot方法
  5. 【matplotlib】可视化解决方案——如何正确使用bar方法
  6. 【matplotlib】可视化解决方案——如何向画布中添加坐标轴
  7. 【matplotlib】可视化解决方案——如何正确使用matplotlib颜色系统
  8. 【matplotlib】可视化解决方案——如何实现画布局部放大功能
  9. 【matplotlib】可视化解决方案——如何更改matplotlib配置信息
  10. 【matplotlib】可视化解决方案——如何定制化网格

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小猪猪家的大猪猪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值