Matplotlib 科学计数法和色条
Matplotlib 是一款用 Python 编写的绘图库,可以绘制各种静态、动态、交互式图表。本文将主要介绍 Matplotlib 中的两个功能:科学计数法和色条。
阅读更多:Matplotlib 教程
科学计数法
Matplotlib 中的科学计数法是默认的,可以通过以下代码将其关闭:
import matplotlib.pyplot as plt
plt.rcParams['axes.formatter.use_mathtext'] = False
这样设置之后,图表中的数值将以普通数字形式出现。但是,科学计数法在某些情况下依然是有用的。例如,在绘制数据范围较大的图表时,科学计数法可以让坐标轴标签更加紧凑:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(1, 1000000, 100)
y = np.sin(1/x)
plt.plot(x, y)
plt.gca().ticklabel_format(style='sci', axis='y', scilimits=(0,0))
plt.show()
上述代码中,我们绘制了一个正弦曲线,同时通过 ticklabel_format
方法将 y 轴的标签设置为科学计数法,并将截断数字的范围设置为 0。
具体来说,style
参数可以设置科学计数法的样式,取值为 ‘sci’(默认)或 ‘plain’(普通数字形式);axis
参数可以设置应用科学计数法的轴,取值为 ‘x’(x 轴)、’y’(y 轴)或 ‘both’(两个轴都应用);scilimits
参数可以设置截断数字的范围。
色条
Matplotlib 中的色条是一种说明颜色映射的工具,可以用来展示某个数据集的数值范围。我们可以通过 colorbar
函数来添加色条,例如:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 20)
y = np.linspace(0, 10, 20)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) + np.cos(Y)
plt.imshow(Z, cmap='coolwarm')
plt.colorbar()
plt.show()
上述代码中,我们绘制了一个二维正弦曲面,并使用 imshow
函数以颜色映射的方式展示数据。然后,我们通过 colorbar
函数添加了一个色条。
默认情况下,色条的取值范围与数据的取值范围相同。如果想要控制色条的取值范围,可以使用 clim
参数,例如:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 20)
y = np.linspace(0, 10, 20)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) + np.cos(Y)
plt.imshow(Z, cmap='coolwarm', clim=(-1, 1))
plt.colorbar()
plt.show()
上述代码中,我们通过 clim
参数将色条的取值范围限制在 -1 到 1 之间。
除了用于展示二维数据以外,色条还可以用于展示离散的数据分类。例如,下面的代码将波士顿房价数据集按照价格分为 5 类,并将其展示为颜色映射的方式:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
boston = load_boston()
prices = boston.target
bins = np.linspace(prices.min(), prices.max(), 6)
labels = ['{:.2f} - {:.2f}'.format(bins[i], bins[i+1]) for i in range(len(bins)-1)]
colors = ['b', 'g', 'y', 'orange', 'r']
prices= np.digitize(prices, bins) - 1
plt.scatter(boston.data[:, 5], boston.data[:, 10], c=prices, cmap='viridis')
cb = plt.colorbar(ticks=np.arange(len(labels)))
cb.set_ticklabels(labels)
plt.xlabel('RM')
plt.ylabel('TAX')
plt.show()
上述代码中,我们将波士顿房价数据集中的 RM 和 TAX 两个特征绘制在二维平面上,并用不同的颜色映射表示价格的 5 个离散类别。通过 colorbar
函数,我们将色条添加到图表中,并使用 ticks
和 set_ticklabels
方法设置色条的标签。
总结
在 Matplotlib 中,科学计数法和色条是非常有用的工具。通过本文的介绍,相信大家已经了解了如何在 Matplotlib 中使用这两个功能。