1 import matplotlib.pyplot as plt 2 import numpy as np 3 4 5 def show_data(columns, values): 6 """ 7 绘图展示 8 :param columns: 名称 9 :param values: 真实数据 10 :return: None 11 """ 12 # 1、创建画布 13 fig = plt.figure(figsize=(20, 12), dpi=120) 14 # 增加RC 参数 15 # 默认不支持中文 16 # 修改RC参数,来让其支持中文 17 plt.rcParams['font.sans-serif'] = 'SimHei' 18 plt.rcParams['axes.unicode_minus'] = False 19 20 # 调整子图的间隔 21 # wspace=None, 来调整 子图之间左右的宽度 22 # hspace=None # 来调整 子图之间上下的宽度 23 plt.subplots_adjust(hspace=0.3) 24 # 2、绘图 25 # 创建子图 26 fig.add_subplot(2, 1, 1) 27 # 关于 各个季度产业散点图 28 x = values[:, 0] 29 y1 = values[:, 3] 30 y2 = values[:, 4] 31 y3 = values[:, 5] 32 plt.scatter(x, y1) 33 plt.scatter(x, y2) 34 plt.scatter(x, y3) 35 36 # 增加标题 37 plt.title("2000-2017年各个产业、行业的散点图") 38 # 增加纵轴名称 39 plt.ylabel("生产总值(亿元)") 40 legend = [tmp[:4] for tmp in columns[3:6]] 41 # 增加图例 42 plt.legend(legend) 43 44 # 增加横轴名称 45 plt.xlabel("季度") 46 47 # 设置横轴刻度 48 xticks = values[:, 1] 49 plt.xticks(x[::4], xticks[::4], rotation=45) 50 51 fig.add_subplot(2, 1, 2) 52 # 关于 各个季度行业散点图 53 y1 = values[:, 6] 54 y2 = values[:, 7] 55 y3 = values[:, 8] 56 y4 = values[:, 9] 57 y5 = values[:, 10] 58 y6 = values[:, 11] 59 y7 = values[:, 12] 60 y8 = values[:, 13] 61 y9 = values[:, 14] 62 63 plt.scatter(x, y1) 64 plt.scatter(x, y2) 65 plt.scatter(x, y3) 66 plt.scatter(x, y4) 67 plt.scatter(x, y5) 68 plt.scatter(x, y6) 69 plt.scatter(x, y7) 70 plt.scatter(x, y8) 71 plt.scatter(x, y9) 72 73 # 增加纵轴名称 74 plt.ylabel("生产总值(亿元)") 75 # 增加图例 76 legend = [tmp[:2] for tmp in columns[6:]] 77 plt.legend(legend, loc=2) 78 79 # 设置横轴刻度 80 xticks = values[:, 1] 81 plt.xticks(x[::4], xticks[::4], rotation=45) 82 83 # 增加横轴名称 84 plt.xlabel("季度") 85 86 # 保存图片 87 plt.savefig("./2000-2017年各个产业、行业的散点图.png") 88 89 # 3、图形展示 90 plt.show() 91 92 93 def build_data(): 94 """ 95 构建数据 96 :return:数据 97 """ 98 # 加载数据 99 res = np.load("./国民经济核算季度数据.npz", allow_pickle=True) 100 # for tmp in res: 101 # print(tmp) 102 columns = res["columns"] 103 values = res["values"] 104 105 # print("columns:\n", columns) 106 # print("values:\n", values) 107 return columns, values 108 109 110 def main(): 111 """ 112 主函数 113 :return:None 114 """ 115 # 1、加载数据 116 columns, values = build_data() 117 118 # 2、绘制图形 119 show_data(columns, values) 120 121 122 if __name__ == '__main__': 123 main() 124 125 # 场景一:类似于折线走势的这种散点图 也可以用来描述走势 126 # 场景二:可以用来描述 点与点(数据与数据)的关系