Python中scatter()函数的实现及应用
scatter()函数是Python中Matplotlib库中的一个函数,用于绘制散点图。散点图是一种用于展示两个变量之间关系的图表,可以通过散点的位置和颜色来表示两个变量的数值。
scatter()函数的基本语法如下:
scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None)
参数说明:
- x,y:两个数组,表示散点的横坐标和纵坐标。
- s:散点的大小,可以是一个标量(所有散点的大小相同)或一个数组(每个散点的大小不同)。
- c:散点的颜色,可以是一个标量(所有散点的颜色相同)或一个数组(每个散点的颜色不同)。
- marker:散点的标记类型,默认为圆点。
- cmap:散点的颜色映射,默认为None。
- alpha:散点的透明度,默认为None。
下面是一个使用scatter()函数绘制散点图的示例:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
plt.scatter(x, y, marker='o', color='blue')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Scatter Plot')
plt.show()
运行以上代码,会生成一个散点图,其中横轴对应x的值,纵轴对应y的值。每个散点的大小和颜色都是默认值。
scatter()函数的应用场景非常广泛,下面列举了几个常见的应用例子。
例子一:绘制分类数据的散点图
scatter()函数可以根据不同的分类标签,使用不同的颜色或形状来表示不同的类别。下面是一个例子,展示了不同物种的鸢尾花数据的散点图。
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
iris = load_iris()
x = iris.data[:, 0] # 花萼长度
y = iris.data[:, 1] # 花萼宽度
species = iris.target # 物种标签
plt.scatter(x[species==0], y[species==0], marker='o', color='red', label=iris.target_names[0])
plt.scatter(x[species==1], y[species==1], marker='o', color='blue', label=iris.target_names[1])
plt.scatter(x[species==2], y[species==2], marker='o', color='green', label=iris.target_names[2])
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.title('Scatter Plot of Iris Dataset')
plt.legend()
plt.show()
运行以上代码,会生成一张图表,横轴对应花萼长度,纵轴对应花萼宽度。不同物种的鸢尾花使用不同的颜色来表示。
例子二:绘制二维特征的散点图
散点图可以用于展示两个特征之间的关系。下面是一个例子,展示了波士顿房价数据集中犯罪率和房间数量之间的关系。
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
boston = load_boston()
x = boston.data[:, 0] # 犯罪率
y = boston.data[:, 5] # 房间数量
price = boston.target # 房价
plt.scatter(x, y, c=price, cmap='coolwarm')
plt.xlabel('Crime Rate')
plt.ylabel('Average Number of Rooms')
plt.title('Scatter Plot of Boston Housing Dataset')
plt.colorbar(label='Price')
plt.show()
运行以上代码,会生成一张图表,横轴对应犯罪率,纵轴对应房间数量。散点的颜色表示对应的房价,颜色越深表示房价越高。
例子三:绘制气泡图
气泡图是一种特殊的散点图,其散点的大小可以表示第三个变量的数值。下面是一个例子,展示了全球各国的人口数量和GDP之间的关系。
import matplotlib.pyplot as plt
import pandas as pd
data = pd.read_csv('population_gdp.csv', encoding='utf-8')
country = data['Country']
population = data['Population']
gdp = data['GDP']
plt.scatter(population, gdp, s=population/1000000, alpha=0.5)
plt.xlabel('Population')
plt.ylabel('GDP')
plt.title('Scatter Plot of Population and GDP')
plt.show()
运行以上代码,会生成一张图表,横轴对应人口数量,纵轴对应GDP。散点的大小表示对应国家的人口数量,大小越大表示人口越多。
