探究ax.scatter函数

发布时间:2023-05-17

一、ax.scatter参数

在使用 ax.scatter 函数的时候,需要了解一些常用的参数,这些参数可以帮助我们更好地使用这个函数。 首先是 xy 参数。它们分别代表了在散点图中点的横坐标和纵坐标,一般是一个数组或者列表。

import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 1, 3, 5])
plt.scatter(x, y)
plt.show()

图中展示了使用 xy 参数来绘制散点图的效果。 除此之外,还有一些其他的重要参数,如 csalphamarker 等等。 c 参数指定了点的颜色,可以是一个数组或者列表。

import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 1, 3, 5])
colors = np.array([0, 10, 20, 30, 40])
plt.scatter(x, y, c=colors, cmap='viridis')
plt.colorbar()
plt.show()

图中展示了使用 c 参数来指定点的颜色的效果。 s 参数指定了点的大小,可以是一个单独的值,也可以是一个数组或者列表。

import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 1, 3, 5])
sizes = np.array([20, 50, 100, 200, 500])
plt.scatter(x, y, s=sizes)
plt.show()

图中展示了使用 s 参数来指定点的大小的效果。 alpha 参数指定了点的透明度,取值范围为 0-1

import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 1, 3, 5])
sizes = np.array([20, 50, 100, 200, 500])
alphas = np.array([0.1, 0.3, 0.5, 0.7, 1])
plt.scatter(x, y, s=sizes, alpha=alphas)
plt.show()

图中展示了使用 alpha 参数来指定点的透明度的效果。 marker 参数指定了点的形状,可以是一个单独的值,也可以是一个数组或者列表。

import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 1, 3, 5])
markers = ['o', 's', '^', 'D', 'v']
plt.scatter(x, y, marker=markers)
plt.show()

图中展示了使用 marker 参数来指定点的形状的效果。

二、ax.scatter中的紫色怎么设置

在使用 ax.scatter 函数的时候,经常会遇到设置紫色的需求,那么我们可以如何实现呢? 其实,紫色是 RGB 颜色模式中的一种。RGB 颜色模式通常指的是由红、绿、蓝三种颜色光以不同的亮度混合而成的颜色。 在 RGB 颜色模式中,紫色可以表示为 (128, 0, 128),这里的三个数字分别代表红色、绿色、蓝色的亮度值,取值范围是 0-255

import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 1, 3, 5])
colors = np.zeros((len(x), 3))
colors[:, 0] = 128
colors[:, 2] = 128
plt.scatter(x, y, c=colors/255)
plt.show()

图中展示了如何使用 RGB 颜色模式中的 (128, 0, 128) 来设置紫色。

三、ax.scatter函数的其他用法

除了上面提到的常用参数外,ax.scatter 函数还有很多其他用法。 例如,我们可以使用 ax.scatter 函数来绘制多个不同大小、不同颜色的点集。

import matplotlib.pyplot as plt
import numpy as np
x1 = np.random.rand(10)
y1 = np.random.rand(10)
s1 = np.random.randint(20, 200, 10)
c1 = np.random.rand(10, 3)
x2 = np.random.rand(10)
y2 = np.random.rand(10)
s2 = np.random.randint(20, 200, 10)
c2 = np.random.rand(10, 3)
fig, ax = plt.subplots()
ax.scatter(x1, y1, s=s1, c=c1, label='set 1')
ax.scatter(x2, y2, s=s2, c=c2, marker='s', label='set 2')
ax.legend()
plt.show()

图中展示了如何使用 ax.scatter 函数来绘制多个不同大小、不同颜色的点集。 除了绘制一般的散点图外,ax.scatter 函数还可以用于绘制三维散点图。

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
x = np.random.rand(50)
y = np.random.rand(50)
z = np.random.rand(50)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z)
plt.show()

图中展示了如何使用 ax.scatter 函数来绘制三维散点图。 ax.scatter 函数还可以用于绘制长度不同的线条。

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 20)
y = np.sin(x)
fig, ax = plt.subplots()
s = np.linspace(0, 1, len(x))
for i in range(len(x) - 1):
    ax.plot([x[i], x[i+1]], [y[i], y[i+1]], color=plt.cm.viridis(s[i]))
ax.scatter(x, y, s=50, c=s, cmap='viridis')
plt.show()

图中展示了如何使用 ax.scatter 函数来绘制长度不同的线条。