Norsaa 2019-12-29
import matplotlib.pyplot as plt
import numpy as np
def show_data(columns, values):
"""
绘图展示
:param columns: 名称
:param values: 真实数据
:return: None
"""
# 1、创建画布
fig = plt.figure(figsize=(20, 12), dpi=120)
# 增加RC 参数
# 默认不支持中文
# 修改RC参数,来让其支持中文
plt.rcParams[‘font.sans-serif‘] = ‘SimHei‘
plt.rcParams[‘axes.unicode_minus‘] = False
# 调整子图的间隔
# wspace=None, 来调整 子图之间左右的宽度
# hspace=None # 来调整 子图之间上下的宽度
plt.subplots_adjust(hspace=0.3)
# 2、绘图
# 创建子图
fig.add_subplot(2, 1, 1)
# 关于 各个季度产业散点图
x = values[:, 0]
y1 = values[:, 3]
y2 = values[:, 4]
y3 = values[:, 5]
plt.scatter(x, y1)
plt.scatter(x, y2)
plt.scatter(x, y3)
# 增加标题
plt.title("2000-2017年各个产业、行业的散点图")
# 增加纵轴名称
plt.ylabel("生产总值(亿元)")
legend = [tmp[:4] for tmp in columns[3:6]]
# 增加图例
plt.legend(legend)
# 增加横轴名称
plt.xlabel("季度")
# 设置横轴刻度
xticks = values[:, 1]
plt.xticks(x[::4], xticks[::4], rotation=45)
fig.add_subplot(2, 1, 2)
# 关于 各个季度行业散点图
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)
plt.scatter(x, y2)
plt.scatter(x, y3)
plt.scatter(x, y4)
plt.scatter(x, y5)
plt.scatter(x, y6)
plt.scatter(x, y7)
plt.scatter(x, y8)
plt.scatter(x, y9)
# 增加纵轴名称
plt.ylabel("生产总值(亿元)")
# 增加图例
legend = [tmp[:2] for tmp in columns[6:]]
plt.legend(legend, loc=2)
# 设置横轴刻度
xticks = values[:, 1]
plt.xticks(x[::4], xticks[::4], rotation=45)
# 增加横轴名称
plt.xlabel("季度")
# 保存图片
plt.savefig("./2000-2017年各个产业、行业的散点图.png")
# 3、图形展示
plt.show()
def build_data():
"""
构建数据
:return:数据
"""
# 加载数据
res = np.load("./国民经济核算季度数据.npz", allow_pickle=True)
# for tmp in res:
# print(tmp)
columns = res["columns"]
values = res["values"]
# print("columns:\n", columns)
# print("values:\n", values)
return columns, values
def main():
"""
主函数
:return:None
"""
# 1、加载数据
columns, values = build_data()
# 2、绘制图形
show_data(columns, values)
if __name__ == ‘__main__‘:
main()
# 场景一:类似于折线走势的这种散点图 也可以用来描述走势
# 场景二:可以用来描述 点与点(数据与数据)的关系