github 仓库,下面npz链接,点击这里
散点图应用场景
1、查看数据的发展规律、趋势
2、可以查看分布规律
import matplotlib.pyplot as plt
import numpy as np
#################### 加载数据 ################
fp = np.load('./国民经济核算季度数据.npz', allow_pickle=True)
# 获取两个数据表
columns = fp['columns']
values = fp['values']
print('colums:\n', columns)
print('values:\n', values)
################### 绘图 #####################
# 默认不支持中文,需要进行修改,修改完后,不支持符号
plt.rcParams['font.sans-serif'] = 'SimHei'
# 增加字体之后变得不支持符号,需要吸怪RC参数让其他继续支持符号
plt.rcParams['axes.unicode_minus'] = False
# 1、创建画布
# 创建画布对象
fig = plt.figure(figsize=(8, 8))
plt.subplots_adjust(hspace=0.5)
# 2、绘制与修饰
# 创建图形 1
fig.add_subplot(2, 1, 1)
# 横轴--时间单位 先用序号替换,因为为中文
x = np.arange(values.shape[0])
# 纵轴-- 生产总值(亿元)
y1 = values[:, 3] # 第一产业
y2 = values[:, 4] # 第二产业
y3 = values[:, 5] # 第三产业
plt.ylabel('生产总值(亿元)')
# 修改x轴,将序号替换成 时间
xticks = values[:, 1]
plt.xticks(x[::4], xticks[::4], rotation=45)
# 绘制图像
plt.scatter(x, y1, c='r', s=5)
plt.scatter(x, y2, c='b', s=5, marker='d')
plt.scatter(x, y3, c='y', s=5, marker='v')
# 标题
plt.title('2000-2017年各行产业增值离散图')
# 图例
lengend = [tmp[:4] for tmp in columns[3:6]]
plt.legend(lengend, fontsize=8)
# 创建图形 2
fig.add_subplot(2, 1, 2)
# 创建x轴 以行的索引,并且以时间中文替换
x = np.arange(values.shape[0])
xticks = values[:, 1]
plt.xticks(x[::4], xticks[::4], rotation=45)
# 创建y轴
y1 = values[:, 6] # 农业
y2 = values[:, 7] # 工业
y3 = values[:, 8] # 建造
y4 = values[:, 9] # 批发
y5 = values[:, 10] # 交通
y6 = values[:, 11] # 住宿
y7 = values[:, 12] # 金融
y8 = values[:, 13] # 房地
y9 = values[:, 14] # 其它
# 绘制图形
plt.scatter(x, y1, c='r', s=5, marker='o')
plt.scatter(x, y2, c='b', s=5, marker='d')
plt.scatter(x, y3, c='y', s=5, marker='v')
plt.scatter(x, y4, c='c', s=5, marker='8')
plt.scatter(x, y5, c='k', s=5, marker='p')
plt.scatter(x, y6, c='m', s=5, marker='h')
plt.scatter(x, y7, c='r', s=5, marker='>')
plt.scatter(x, y8, c='g', s=5, marker='<')
plt.scatter(x, y9, c='y', s=5, marker='s')
# 图例
# legend = columns[6:]
legend = [tmp[:2] for tmp in columns[6:]]
plt.legend(legend, fontsize=5)
# 3、图形展示
plt.savefig('./各行产业增值离散图.png')
plt.show()