2001-2020粮棉油进行数据可视化分析
选择任意布局(如下例),按要求完成图表绘制
或
- A:2001-2020年棉花产量走势折线图
- B:2010-2020年粮棉油增长率柱状图
- C:2020年棉粮油产量比例饼状图
- D:2020年棉粮油经济价值比例饼状图
(以粮食均价为3600元/吨,棉花均价为16000元/吨,油料均价为6000元/吨为例)
统计时间 | 粮食产量(万吨) | 粮食产量增长(%) | 棉花(万吨) | 棉花增长(%) | 油料(万吨) | 油料增长(%) |
---|---|---|---|---|---|---|
2001年 | 45263.67 | 1.2 | 532.35 | -4.2 | 2864.9 | 1.3 |
2002年 | 45705.75 | 1 | 491.62 | -7.7 | 2897.2 | 1.1 |
2003年 | 43069.53 | -5.8 | 485.97 | -1.1 | 2811 | -3 |
2004年 | 46946.95 | 9 | 632.35 | 30.1 | 3065.91 | 9.1 |
2005年 | 48402.19 | 3.1 | 571.42 | -9.6 | 3077.14 | 0.4 |
2006年 | 49804.23 | 2.9 | 753.28 | 31.8 | 2640.31 | -14.2 |
2007年 | 50413.85 | 1.2 | 759.71 | 0.9 | 2786.99 | 5.6 |
2008年 | 53434.29 | 6 | 723.23 | -4.8 | 3036.76 | 9 |
2009年 | 53940.86 | 0.9 | 623.58 | -13.8 | 3139.42 | 3.4 |
2010年 | 55911.31 | 3.7 | 577.04 | -7.5 | 3156.77 | 0.6 |
2011年 | 58849.33 | 5.3 | 651.89 | 13 | 3212.51 | 1.8 |
2012年 | 61222.62 | 4 | 660.8 | 1.4 | 3285.62 | 2.3 |
2013年 | 63048.2 | 3 | 628.16 | -4.9 | 3348 | 1.9 |
2014年 | 63964.83 | 1.5 | 629.94 | 0.3 | 3371.92 | 0.7 |
2015年 | 66060.27 | 3.3 | 590.74 | -6.2 | 3390.47 | 0.6 |
2016年 | 66043.51 | 0 | 534.28 | -9.6 | 3400.05 | 0.3 |
2017年 | 66160.73 | 0.2 | 565.25 | 5.8 | 3475.24 | 2.2 |
2018年 | 65789.22 | -0.6 | 610.28 | 8 | 3433.39 | -1.2 |
2019年 | 66384.34 | 0.9 | 588.9 | -3.5 | 3492.98 | 1.7 |
2020年 | 66949 | 0.9 | 591 | 0.4 | 3585 | 2.6 |
(注:表中数据来自中国政府网 http://www.gov.cn/shuju/index.htm ) 上表是2002年至2020年中国粮棉油产量统计数据。
对数据进行可视化分析的代码如下:
# 1. 导入所需要的库
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import pymysql
# 2. 设置全局变量
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体为SimHei
plt.rcParams['axes.unicode_minus']=False # 使图支持中文字符
plt.rcParams['figure.figsize'] = (20, 8) # 设置画布大小
plt.rcParams['figure.dpi'] = 150 # 设置分辨率
FILE_NAME = "粮食产量.xls" # 读取数据赋给全局变量FILE_NAME
# 3. 导入数据
df = pd.read_excel(FILE_NAME)
data = df.values
x1 = data[:, 0] # 取第一列数据
y1 = data[:, 3]
x1_label = '年份' # 设置标签
y1_label = '棉花产量(万吨)'
x2 = data[9:20, 0] # 取9-20行第一列数据
y21 = data[9:20, 2]
y22 = data[9:20, 4]
y23 = data[9:20, 6]
x2_label = '年份'
y2_label = '增长率(%)'
data_2020 = df[df['统计时间']=='2020年'].loc[:, ['粮食产量(万吨)', '棉花(万吨)', '油料(万吨)']].T
x3 = data_2020.values[:, 0]
y3 = data_2020.index.str.replace('(万吨)', '').values
x4 = [data_2020.iloc[0,0]*10000*3600, data_2020.iloc[1,0]*10000*16000, data_2020.iloc[2,0]*10000*6000]
y4 = y3
我们这里将图画在一个画布上,当然也可以画在多个画布
# 4. 作图
plt.figure(figsize=(20, 36), facecolor='#ccddcc') # 设置画布大小
# 4.1 粮食产量走势图
plt.subplot(311) # 3行一列
plt.plot(x1, y1, marker='o')
plt.xticks(x1) # 设置刻度
plt.xlabel(x1_label, size=13)
plt.ylabel(y1_label, size=13)
plt.title("2001-2020年棉花产量走势折线图", size=20) # 设置标题
plt.grid() # 设置网格
# 4.1.1 设置数据标签
for _x, _y in zip(x1, y1):
plt.text(_x, _y + 0.1, '%.2f' % _y, ha='center', va='bottom', size=10)
# 4.2 粮棉油增长率柱状图
plt.subplot(312)
width = 0.21
xtick = np.arange(0, x2.size)
t_1 = plt.bar(xtick, y21, width=width, label='粮')
t_2 = plt.bar(xtick + width, y22, width=width, label='棉')
t_3 = plt.bar(xtick + 2 * width, y23, width=width, label='油')
plt.xticks(xtick + width, x2)
plt.xlabel(x2_label, size=13)
plt.ylabel(y2_label, size=13)
plt.title("2010-2020年粮棉油增长率柱状图", size=20)
plt.legend()
plt.grid()
# 4.2.1 设置数据标签
for k in t_1:
height=k.get_height()
plt.text(k.get_x() + k.get_width() / 2, height, str(height),fontsize=10, ha="center", va="bottom")
for k in t_2:
height=k.get_height()
plt.text(k.get_x() + k.get_width() / 2, height, str(height),fontsize=10, ha="center", va="bottom")
for k in t_3:
height=k.get_height()
plt.text(k.get_x() + k.get_width() / 2, height, str(height),fontsize=10, ha="center", va="bottom")
# 4.3 棉粮油产量比例饼状图
plt.subplot(325)
autopct = '%1.1f%%'
radius=0.8
explode = np.zeros_like(x3)
explode+=0.11
startangle = 90
plt.pie(x3, labels=y3, autopct=autopct, radius=radius,
explode=explode, startangle=startangle, shadow=True)
plt.title('2020年棉粮油产量比例饼状图')
plt.legend(loc=0, bbox_to_anchor=(0.82, 1))
# 4.4 棉粮油经济价值比例饼状图
plt.subplot(326)
autopct = '%1.1f%%'
radius=0.8
explode = np.zeros_like(x4)
explode+=0.1
startangle = 90
plt.pie(x4, labels=y4, autopct=autopct, radius=radius,
explode=explode, startangle=startangle, shadow=True)
plt.title('2020年棉粮油经济价值比例饼状图')
plt.legend(loc=0, bbox_to_anchor=(0.82, 1))
plt.savefig(fname="Picture.png",figsize=[20,36])
plt.show()
作图结果如图所示:
大家喜欢的话点一点小心心哦!帮忙转载也是可以的!谢谢!