使用pycharm的朋友们,需要在解释器来安装相应库。
有想练手的朋友,用百度网盘
链接:https://pan.baidu.com/s/1aOTPRsqkgX4isGDhMjLdlQ
提取码:1234
#国民生产总值案例 #读取npz文件 #第一步: import numpy as np import matplotlib.pyplot as plt #第二步: plt.rcParams["font.sans-serif"] = ["simhei"] #指定默认字体 plt.rcParams["axes.unicode_minus"]= False #解决保存图像是负号‘-’显示为方块的问题 #第三步:读取数值 data = np.load("国民经济核算季度数据 .npz",allow_pickle=True) #data.files是显示文件中字典的键值对和值----['columns', 'values'] #print(data.files) #第四步:查看字典的键值对和值-----['columns', 'values'] #print(data['columns']) ''' ['序号' '时间' '国内生产总值_当季值(亿元)' '第一产业增加值_当季值(亿元)' '第二产业增加值_当季值(亿元)' '第三产业增加值_当季值(亿元)' '农林牧渔业增加值_当季值(亿元)' '工业增加值_当季值(亿元)' '建筑业增加值_当季值(亿元)' '批发和零售业增加值_当季值(亿元)' '交通运输、仓储和邮政业增加值_当季值(亿元)' '住宿和餐饮业增加值_当季值(亿元)' '金融业增加值_当季值(亿元)' '房地产业增加值_当季值(亿元)' '其他行业增加值_当季值(亿元)'] ''' #print(data['values']) ''' [[1 '2000年第一季度' 21329.9 ... 1235.9 933.7 3586.1] [2 '2000年第二季度' 24043.4 ... 1124.0 904.7 3464.9] [3 '2000年第三季度' 25712.5 ... 1170.4 1070.9 3518.2] ... [67 '2016年第三季度' 190529.5 ... 15472.5 12164.1 37964.1] [68 '2016年第四季度' 211281.3 ... 15548.7 13214.9 39848.4] [69 '2017年第一季度' 180682.7 ... 17213.5 12393.4 42443.1]] ''' #为了保证绘图的客观性,对值values的数值:查看最大值、最小值。确定范围 #学习索引、python基础 #print(data['values'][:,2].min()) #21329.9 #print(data['values'][: ,2].max()) #211281.3 #查看维度 name=data['columns'] #用name定义字典的键值对 values = data['values'] #用values定义字典的数据值 #print(name.ndim) #维度:1 #print(values.ndim) #维度:2 #绘制 2000-2017年各季度国民生产总值散点图 plt.figure(figsize=(20,8)) #画布 plt.scatter(values[:,1],values[: ,2],marker='D') #散点图基础、横轴和纵轴是索引 plt.xlabel('年份') plt.ylabel('生产总值(亿元)') plt.ylim(0,225000) plt.title(' 2000-2017年各季度国民生产总值散点图') plt.xticks(values[range(0,70,4),1],rotation=45) plt.show() #绘制 2000-2017年各个产业国民生产总值散点图 plt.figure(figsize=(20,8)) #画布 #该方法重复---大忌-----建议:循环 ''' plt.scatter(values[:,1],values[: ,3],marker='*') plt.scatter(values[:,1],values[: ,4],marker='v') plt.scatter(values[:,1],values[: ,5],marker='D') ''' mark = ["*","v","D"] for i in range(3,6): plt.scatter(values[:,1], values[:, i],marker=mark[i-3]) plt.xticks(values[range(0,69,4),1],rotation=45) plt.legend(name[3:6]) #图例 plt.title("2000-2017年各个产业国民生产总值散点图") plt.show() #同上,解决:2000-2017年各个行业国民生产总值散点图 plt.figure(figsize=(20,8)) #画布 for i in range(6,15): plt.scatter(values[:,1], values[:, i]) plt.xticks(range(0,69,4),values[range(0,69,4),1],rotation=45) plt.legend(name[6:]) #图例 plt.title("2000-2017年各个行业国民生产总值散点图") plt.show() #绘制条形图 plt.figure(figsize=(12,12)) label1=eval(str(['第一产业增加值_当季值(亿元)', '第二产业增加值_当季值(亿元)', '第三产业']).replace('增加值_当季值(亿元)','')) label2=eval(str(['农林业增加值_当季值(亿元)', '工业增加值_当季值(亿元)', '建筑业增加值_当季值(亿元)', '批零业增加值_当季值(亿元)', '交通运输业增加值_当季值(亿元)', '住宿餐饮业增加值_当季值(亿元)', '金融业增加值_当季值(亿元)', '房地产业增加值_当季值(亿元)', '其他行业增加值_当季值(亿元)']).replace('增加值_当季值(亿元)','')) ax1=plt.subplot(221) plt.bar(range(3),values[0,3:6],width=0.3,alpha=0.7) plt.xlabel('产业') plt.ylabel('生成总值(亿元)') plt.xticks(range(3),label1) plt.title('2000年第一季度个产业国民生成总值(亿元)') for i,j in zip(range(3),values[0,3:6]): plt.text(i,j+100,"%1.f"%j,ha="center",color='r') plt.plot(range(3),values[0,3:6],'g*-.') ax2=plt.subplot(222) plt.bar(range(3),values[-1,3:6],width=0.3,alpha=0.7) plt.xlabel('产业') plt.ylabel('生成总值(亿元)') plt.xticks(range(3),label1) plt.title('2017年第一季度个产业国民生成总值(亿元)') ax3=plt.subplot(223) plt.bar(range(9),values[0,6:],width=0.3,alpha=0.7) plt.xlabel('产业') plt.ylabel('生成总值(亿元)') plt.xticks(range(9),label2,rotation=35) ax4=plt.subplot(224) plt.bar(range(9),values[-1,6:],width=0.3,alpha=0.7) plt.xlabel('产业') plt.ylabel('生成总值(亿元)') plt.xticks(range(9),label2,rotation=35) plt.show() #绘制饼图 list1=eval(str(['第一产业增加值_当季值(亿元)', '第二产业增加值_当季值(亿元)','第三产业']).replace('增加值_当季值(亿元)','')) #print(list1) label1 = ['第一产业','第二产业','第三产业']## 标签1 label2 = ['农业','工业','建筑','批发','交通','餐饮','金融','房地产','其他']## 标签2 explode1 = [0.01,0.01,0.01] explode2 = [0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01] p = plt.figure(figsize=(12,12)) ## 子图1 ax1 = p.add_subplot(2,2,1) plt.pie(values[0,3:6],explode=explode1,labels=label1,autopct="%1.1f%%")## 绘制饼图 plt.title('2000年第一季度国民生产总值产业构成分布饼图') ## 子图2 ax2 = p.add_subplot(2,2,2) plt.pie(values[-1,3:6],explode=explode1,labels=label1,autopct='%1.1f%%')## 绘制饼图 plt.title('2017年第一季度国民生产总值产业构成分布饼图') ## 子图3 ax3 = p.add_subplot(2,2,3) plt.pie(values[0,6:],explode=explode2,labels=label2,autopct='%1.1f%%')## 绘制散点图 plt.title('2000年第一季度国民生产总值行业构成分布饼图')## 添加图表标题 ## 子图4 ax4 = p.add_subplot(2,2,4) plt.pie(values[-1,6:],explode=explode2,labels=label2,autopct='%1.1f%%')## 绘制饼图 plt.title('2017年第一季度国民生产总值行业构成分布饼图')## 添加图表标题 ## 并显示图形 plt.savefig('国民生产总值构成分布饼图.png') plt.show()