在Python中,散点图和折线图是数据分析最常用的两种图形。这两种图形都能够分析不同数值型特征间的关系。
1.散点图
1.1散点图函数
在pyplot中可以使用scatter函数绘制散点图,其使用格式如下。
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)
函数常用参数及其说明如下表所示。
参数名称 | 说明 |
---|---|
x ,y | 接收array,表示x轴和y轴对应的数据。无默认值 |
s | 接收数值或一维的array。表示指定点的大小,若传入一维array则表示每个点的大小。无默认值 |
c | 接收颜色或一维的array。表示指定点的颜色,若传入一维array则表示每个点的颜色。无默认值 |
marker | 接收特定str,表示绘制的点的类型。 |
alpha | 接收0~1的float,表示点的透明度。 |
2.折线图
2.1折线图函数
在pyplot中可以使用plot函数绘制折线图,其基本使用格式如下。
matplotlib.pyplot.plot(*args, **kwargs)
plot函数在官方文档的语法中只要求填入不定长参数,实际可以填入的主要参数如表所示
参数名称 | 说明 |
---|---|
x,y | 接收array,表示x轴和y轴对应的数据。 |
color | 接收array,表示x轴和y轴对应的数据。 |
linestyle | 接收特定str,表示指定线条类型。默认为“-” |
marker | 接收特定str,表示绘制的点的类型。 |
alpha | 接收0~1的float,表示点的透明度。 |
color参数的8种常用颜色的缩写如表所示。
颜色缩写 | 代表的颜色 |
---|---|
b | 蓝色 |
g | 绿色 |
r | 红色 |
c | 青色 |
m | 品红 |
y | 黄色 |
k | 黑色 |
w | 白色 |
plot函数一次可以接收多组数据,添加多条折线图,同时还可以分别定义每条折线的颜色、点的形状和类型,将折线的颜色、点的形状和类型连接在一起用一个字符串表示。
3.散点图与折线图的绘制
3.1散点图绘制
拿以下数据进行分析
分析步骤:首先读取表数据,提取其中的columns字段,视为数据的标签,提取其中的values字段,数据的存在位置,设置画布,绘制散点图,添加横轴标签(年份),添加y轴名称(年末总人口(万人)), 添加图表标题(2000-2019年年末总人口散点图),这里以散点图为例
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] =' SimHei'
plt.rcParams['axes.unicode_minus'] = False
data = pd.read_csv('../data/people.csv')
name = data.columns
values = data.values
plt.figure(figsize=(9, 7))
plt.scatter(values[:, 0], values[:, 1], marker='o')
plt.xlabel('年份')
plt.ylabel('年末总人口(万人)')
plt.xticks(range(0, 20), values[range(0, 20), 0], rotation=45)
plt.title('2000-2019年年末总人口散点图')
plt.savefig('../tmp/2000-2019年年末总人口散点图.png')
plt.show()
plt.figure(figsize=(9, 7)) # 设置画布
plt.scatter(values[:, 0], values[:, 2], marker='o',c='red') # 绘制散点图
plt.scatter(values[:, 0], values[:, 3], marker='D',c='blue') # 绘制散点图
plt.scatter(values[:, 0], values[:, 4], marker='v',c='black') # 绘制散点图
plt.xlabel('年份') # 添加横轴标签
plt.ylabel('年末总人口(万人)') # 添加纵轴标签
plt.xticks(range(0, 20), values[range(0, 20), 0], rotation=45)
plt.title('2000-2019年各年龄段年末总人口散点图') # 添加图表标题
plt.legend(['0-14岁人口', '15-64岁人口', '65岁及以上人口']) #添加图例
plt.savefig('../tmp/2000-2019年各年龄段年末总人口散点图.png')#图片保存地址
plt.show()
3.2折线图绘制
plt.figure(figsize=(9, 7)) # 设置画布
plt.plot(values[:, 0], values[:, 1], color='r', linestyle='--') # 绘制折线图
plt.xlabel('年份') #添加横轴标签
plt.ylabel('年末总人口(万人)') # 添加y轴名称
plt.xticks(range(0, 20), values[range(0, 20), 0], rotation=45)
plt.title('2000-2019年年末总人口折线图') # 添加图表标题
plt.savefig('../tmp/2000-2019年年末总人口折线图.png')
plt.show()
3.3点线图:点线融合
plt.figure(figsize=(9, 7)) # 设置画布
plt.plot(values[:, 0], values[:,1], color='r', linestyle='--', marker='o') # 绘制折线图
plt.xlabel('年份') # 添加横轴标签
plt.ylabel('年末总人口(万人)') # 添加y轴名称
plt.xticks(range(0, 20), values[range(0, 20), 0], rotation=45)
plt.title('2000-2019年年末总人口点线图') # 添加图表标题
plt.savefig('../tmp/2000-2019年年末总人口点线图.png')
plt.show()
plt.figure(figsize=(8, 7)) # 设置画布
plt.plot(values[:, 0], values[:, 2], 'bs-',
values[:, 0], values[:,3], 'ro-.',
values[:, 0], values[:, 4], 'gH--') # 绘制折线图
plt.xlabel('年份') # 添加横轴标签
plt.ylabel('年末总人口(万人)') # 添加y轴名称
plt.xticks(range(0, 20), values[range(0, 20), 0], rotation=45)
plt.title('2000-2019年各年龄段总人口点线图') # 添加图表标题
plt.legend(['0-14岁人口', '15-64岁人口', '65岁及以上人口'])
plt.savefig('../tmp/2000-2019年各年龄段总人口点线图.png')
plt.show()