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