Matplotlib 基本用法和散点图

Matplotlib 基本用法和散点图

Matplotlib是Python中一款常用的可视化工具,其拥有丰富的图形库。本篇文章主要介绍 Matplotlib 中散点图的绘制,简单介绍 Matplotlib 的基本用法和散点图中可能出现的错误以及解决方法。

阅读更多:Matplotlib 教程

Matplotlib基础

Matplotlib 的基本要素主要有 Figure、Axes 以及 Axis。其中,Figure 代表整个图,可以包含多个 Axes 对象;一个 Axes 对象代表一个坐标系,可以包含多个 Axis 对象;一般情况下 Axis 对象是与坐标轴相关的。

在使用 Matplotlib 绘图的时候,我们一般先创建 Figure 对象,再在 Figure 对象中画出一个或多个 Axes 对象。为了方便绘图,可以通过 plt.subplots() 来一次性创建 Figure 和 Axes 对象。

下面是一个简单的例子,绘制了一条以 x 值为横坐标、y 值为纵坐标的直线。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = x

fig, ax = plt.subplots()
ax.plot(x, y)

plt.show()

绘制散点图

散点图是一种常见的数据可视化方式,常用于展示两个变量之间的关系。在 Matplotlib 中,可以使用 scatter() 函数来绘制散点图。

下面是一个例子,绘制了一组具有不同颜色和标记的散点。

import matplotlib.pyplot as plt
import numpy as np

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2    # 点面积 array

fig, ax = plt.subplots()

ax.scatter(x, y, s=area, c=colors, alpha=0.5)

plt.show()

散点图常见错误

在绘制散点图的过程中,有些错误会导致图像无法正常显示。下面简单介绍一下可能出现的错误和解决方法。

ValueError: ‘c’ argument must be a color, a sequence of colors, or a sequence of numbers, not XXX

这个错误通常出现在 color 参数传入了一个文本类型的值。下面是一个例子,传入了一个字符串类型的颜色值,导致出现上述错误。

import matplotlib.pyplot as plt
import numpy as np

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = 'blue'    # 错误的颜色值
area = (30 * np.random.rand(N))**2    # 点面积 array

fig, ax = plt.subplots()

ax.scatter(x, y, s=area, c=colors, alpha=0.5)

plt.show()

解决方法是将 colors 参数改为合适的颜色值或数值序列,例如使用一个数组表示颜色。

import matplotlib.pyplot as plt
import numpy as np

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)    # 随机颜色值 array
area = (30 * np.random.rand(N))**2    # 点面积 array

fig, ax = plt.subplots()

ax.scatter(x, y, s=area, c=colors, alpha=0.5)

plt.show()

TypeError: scatter() got multiple values for argument ‘s’

这个错误可能是由于在调用 scatter() 函数时,s 参数被传了两遍。下面是一个例子,s 参数被传了两次,导致出现上述错误。

import matplotlib.pyplot as plt
import numpy as np

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2

fig, ax = plt.subplots()

ax.scatter(x, y, s=area, s=80, c=colors, alpha=0.5)   # s 参数被重复传入

plt.show()

解决方法是删除其中一个 s 参数即可。

import matplotlib.pyplot as plt
import numpy as np

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2

fig, ax = plt.subplots()

ax.scatter(x, y, s=area, c=colors, alpha=0.5)

plt.show()

总结

本文主要介绍了 Matplotlib 中散点图的基本绘制方法,以及可能出现的错误和解决方法。通过学习本文,你可以更好地理解 Matplotlib 的基本要素,并能够更加灵活地使用 Matplotlib 绘制散点图。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程