1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 def draw_data(n, a, b, l, values, fig, plt):
 5     fig.add_subplot(2, 1, n)
 6     x = values[:, 0]
 7     for i in range(a, b+1):
 8         y = values[:, i]
 9         plt.scatter(x, y)
10     plt.title("2000-2017年各个产业、行业的散点图")
11     plt.xlabel("季度")
12     plt.ylabel("生产总值(亿元)")
13     plt.legend(l, loc=2)
14     xticks = values[:, 1]
15     plt.xticks(x[::4], xticks[::4], rotation=45)
16     return plt
17 
18 def show_data():
19     fig = plt.figure(figsize=(20, 12), dpi=120)
20     plt.rcParams['font.sans-serif'] = 'SimHei'
21     plt.rcParams['axes.unicode_minus'] = False
22     plt.subplots_adjust(hspace=0.3)
23     return fig, plt
24 
25 def save_data():
26     plt.savefig("./2000-2017年各个产业、行业的散点图.png")
27     plt.show()
28     return None
29 
30 
31 def build_data():
32     res = np.load("./国民经济核算季度数据.npz", allow_pickle=True)
33     columns = res["columns"]
34     values = res["values"]
35     return columns, values
36 
37 def main():
38     columns, values = build_data()
39     fig, plt = show_data()
40     legend1 = [tmp[:4] for tmp in columns[3:6]]
41     draw_data(1, 3, 5, legend1, values, fig, plt)
42     legend2 = [tmp[:2] for tmp in columns[6:]]
43     draw_data(2, 6, 14, legend2, values, fig, plt)
44     save_data()
45 
46 
47 
48 if __name__ == '__main__':
49     main()
50 
51 # 场景一:类似于折线走势的这种散点图 也可以用来描述走势
52 # 场景二:可以用来描述 点与点(数据与数据)的关系