
什么是对数刻度?
就是在作图之前,先对原始数值做对数计算,在画到坐标轴上。
简单回忆下中学学过的对数函数:log2(x), loge(x)和log10(x)

为什么要使用对数刻度?
回答这个问题之前,先看看,你有没有见过这样的图:
很多数据点,都集中在较小值那一端,看也看不清;而另一端较大数值,却数据点很少、显得很空旷。

原因就是这些数据的分布不均,不在一个数量级。或者说,如果把数值从小到大排序,会发现他们不是等距离的逐渐增加(比如1, 2, 3, ….;等差数列),而是成倍数的增长(比如1, 10, 100, 1000 …;等比数列)
这个时候,使用对数刻度的优点就呈现出来了。
1) 数量级相差太大的数值,也可以放在同一个尺度上呈现。
2) 视觉化上有优势:视觉上相差的距离,有数据意义,代表了相差了多少倍。
现在以[1, 3.16, 10, 31.6, 100]这几个数为例说明这两个优点。
[1, 3.16, 10, 31.6, 100]示例
对数刻度优点:
1) 数量级相差太大的数值,也可以放在同一个尺度上呈现。
比如,对数化之前,这几个数值呈现效果如下:
大部分都集中在左侧一段。

对数化之后(以10为底数,即log10(x)),就可以在图形上均匀分布了。

对数刻度优点:
2) 视觉化上有优势:视觉上相差的距离,有数据意义,代表了相差了多少倍。
在对数刻度的坐标轴上的任意两个点,距离相差多少,就代表这两个值相差多少。这样处理后的数字化呈现,便于理解。
比如下图的1)和2),都代表差了3.16倍;
而下图的3)相差了这个长度的任何两个点,都代表相差3.16倍。

注意对数刻度坐标轴的正确标注方法。一般有两种:
方法1)直接标真实值,
或者方法2)标记x,然后轴名称加上公式log10(x)。比如下图:

最好使用方法1)。否则数据点代表的真实值是多少,还需要花时间理解、计算。
参考:https://serialmentor.com/dataviz/coordinate-systems-axes.html
真实案例
现在再看一个真实案例:
2007年,各个国家人均GDP(x轴)和寿命(y轴)的关系。
数据点未经处理,直接作图为:

Python plotly作图
因为寿命相差比较平均,但是每个国家GDP则相差较大(最高最低差了两个数量级),可以考虑对数处理。
下图是log10(GPD)后的数据呈现:

处理后的x坐标轴,标记的是其真实值。刻度线分别代表了:300,400,500, …. 1000, 2000, 3000, 4000, 5000, … 10k, 20k, 30k, … 60k…
不出所料,400/300=1.33,500/400=1.25… 所以被标记的刻度线,距离变小,从稀疏逐渐变密集。
活学活用
对数刻度可以用在数据量呈倍数增长的情况下。
聪明的读者,一定想到了最近的疫情扩散情况,极其符合对数刻度作图。
这里借用了《金融时报》数据化专家John Burn-Murdoch的图表。对数化处理后,可以从每个国家的曲线是否还在上升,判断感染速率是否下降,也就是是否出现了疫情拐点。
转载:https://www.shangyexinzhi.com/article/1619223.html

作图工具:Python Plotly