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 # 场景二:可以用来描述 点与点(数据与数据)的关系