2001-2020粮棉油进行数据可视化分析

2001-2020粮棉油进行数据可视化分析

选择任意布局(如下例),按要求完成图表绘制

- A:2001-2020年棉花产量走势折线图
- B:2010-2020年粮棉油增长率柱状图
- C:2020年棉粮油产量比例饼状图
- D:2020年棉粮油经济价值比例饼状图

(以粮食均价为3600元/吨,棉花均价为16000元/吨,油料均价为6000元/吨为例)

统计时间粮食产量(万吨)粮食产量增长(%)棉花(万吨)棉花增长(%)油料(万吨)油料增长(%)
2001年45263.671.2532.35-4.22864.91.3
2002年45705.751491.62-7.72897.21.1
2003年43069.53-5.8485.97-1.12811-3
2004年46946.959632.3530.13065.919.1
2005年48402.193.1571.42-9.63077.140.4
2006年49804.232.9753.2831.82640.31-14.2
2007年50413.851.2759.710.92786.995.6
2008年53434.296723.23-4.83036.769
2009年53940.860.9623.58-13.83139.423.4
2010年55911.313.7577.04-7.53156.770.6
2011年58849.335.3651.89133212.511.8
2012年61222.624660.81.43285.622.3
2013年63048.23628.16-4.933481.9
2014年63964.831.5629.940.33371.920.7
2015年66060.273.3590.74-6.23390.470.6
2016年66043.510534.28-9.63400.050.3
2017年66160.730.2565.255.83475.242.2
2018年65789.22-0.6610.2883433.39-1.2
2019年66384.340.9588.9-3.53492.981.7
2020年669490.95910.435852.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()

作图结果如图所示:
在这里插入图片描述

大家喜欢的话点一点小心心哦!帮忙转载也是可以的!谢谢!

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值