1 import matplotlib.pyplot as plt 2 import numpy as np 3 4 def draw_data(n, a, b, d, values, fig, plt, t, l, cl): 5 fig.add_subplot(2, 2, n) 6 x = values[d, a:b+1] 7 # explode = (0.01) 8 plt.pie(x, labels=l, colors=cl, autopct="%.2f%%", shadow=False, labeldistance=1.05) 9 plt.axis("equal") 10 plt.legend(l) 11 plt.title(t) 12 plt.savefig("./2000和2017年各产业生产总值占比饼图.png") 13 return plt 14 15 def show_data(): 16 fig = plt.figure(figsize=(20, 12), dpi=120) 17 plt.rcParams['font.sans-serif'] = 'SimHei' 18 plt.rcParams['axes.unicode_minus'] = False 19 # plt.subplots_adjust(hspace=0.3) 20 return fig, plt 21 22 def save_data(): 23 plt.savefig("./2000-2017年各个产业、行业的柱状图.png") 24 plt.show() 25 return None 26 27 def build_data(): 28 res = np.load("./国民经济核算季度数据.npz", allow_pickle=True) 29 columns = res["columns"] 30 values = res["values"] 31 # print(columns) 32 # print(values) 33 return columns, values 34 35 def main(): 36 columns, values = build_data() 37 fig, plt = show_data() 38 title1 = "2000年第一季度国民总值产业构成分布饼图" 39 title2 = "2017年第一季度国民总值产业构成分布饼图" 40 labels1 = [tmp[:4] for tmp in columns[3:6]] 41 labels2 = [tmp[:2] for tmp in columns[6:]] 42 colors1 = ["#53868B", "#7AC5CD", "#8EE5EE"] 43 colors2 = ["#CD9B9B", "#EEB4B4", "#8B658B"] 44 colors3 = ["#548B54", "#7CCD7C", "#90EE90", "#9AFF9A", "#2E8B57", "#43CD80", "#4EEE94", "#54FF9F", "#698B69"] 45 colors4 = ["#CD950C", "#EEAD0E", "#FFB90F", "#8B6914", "#CD9B1D", "#EEB422", "#FFC125", "#8B7500", "#CDAD00"] 46 draw_data(1, 3, 5, 0, values, fig, plt, title1, labels1, colors1) 47 draw_data(2, 3, 5, 68, values, fig, plt, title2, labels1, colors2) 48 draw_data(3, 6, 14, 0, values, fig, plt, title1, labels2, colors3) 49 draw_data(4, 6, 14, 68, values, fig, plt, title2, labels2, colors4) 50 save_data() 51 52 53 if __name__ == '__main__': 54 main()