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 绘制散点图。