Matplotlib 科学计数法和色条

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 函数,我们将色条添加到图表中,并使用 ticksset_ticklabels 方法设置色条的标签。

总结

在 Matplotlib 中,科学计数法和色条是非常有用的工具。通过本文的介绍,相信大家已经了解了如何在 Matplotlib 中使用这两个功能。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程