用python制作炫酷吊炸天多子图,matplotlib之subplot()的应用

前言:

为了让自己的图片更加炫酷,我们今天请到了嘉宾subplot()函数,可以让我们实现多子图的效果。数据采用的是18年美赛E题的数据。在进行标准化处理以后进行的可视化。先上效果图

是不是准备好学习了,GO!GO!GO!


目录

一、函数介绍

二、相关代码及数据

2.1 数据处理及展示

2.2 全部代码含注释

最终结果:


一、函数介绍

1.plt.subplot(nrows,ncols,index) 创建子图
2. nrows参数指定将数据图区域划分成几行
3. ncols参数指定将数据图区域分成多少列
4. index 参数指定获取第几个区域

二、相关代码及数据

2.1 数据处理及展示

2018年的美赛E题是制作国家脆弱性指数预测模型,数据来自于题目中提供的网址。数据一共有12项指标,为了统一,我们进行最大最小标准化法进行0-1标准化。

2.2 全部代码含注释

如果不知道怎么怎么读取数据可以参考我之前的博客pandas读取数据https://blog.csdn.net/Eli_change/article/details/112256966以及python文件导入用matplotlib制作图片设置标注小白入门,功能性代码,包学包会,文章略长https://blog.csdn.net/Eli_change/article/details/107437468

import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体
plt.rcParams['axes.unicode_minus'] = False  # 设置正负号
fig = plt.figure(figsize=(15,13),dpi=80) # 设置图片的大小以及不透明度
# 因为是在jupyter notebook 里运行,所以x轴以这种方式写入
z=[]


for i in range(len(df['C1: Security Apparatus'])):
    z.append(i)
plt.subplot(4,3,1)  # 创建4行3列的图,第一张,以此类推
plt.bar(z,df['C1: Security Apparatus'],color='orange')
plt.xticks(range(30),[],rotation=90)  # 替换x轴不显示,为了美观,只显示最后一行的
plt.title('C1: Security Apparatus')


plt.subplot(4,3,2) 
plt.bar(z,df['C2: Factionalized Elites'],color='r')
plt.title('C2: Factionalized Elites')
plt.xticks(range(30),[],rotation=90)


plt.subplot(4,3,3) 
plt.bar(z,df['C3: Group Grievance'],color='skyblue')
plt.title('C3: Group Grievance')
plt.xticks(range(30),[],rotation=90)


plt.subplot(4,3,4) 
plt.bar(z,df['E1: Economy'],color='pink')
plt.title('E1: Economy')
plt.xticks(range(30),[],rotation=90)


plt.subplot(4,3,5) 
plt.bar(z,df['E2: Economic Inequality'],color='green')
plt.title('E2: Economic Inequality')
plt.xticks(range(30),[],rotation=90)


plt.subplot(4,3,6) 
plt.bar(z,df['E3: Human Flight and Brain Drain'],color='purple')
plt.title('E3: Human Flight and Brain Drain')
plt.xticks(range(30),[],rotation=90)


plt.subplot(4,3,7) 
plt.bar(z,df['P1: State Legitimacy'],color='yellow')
plt.title('P1: State Legitimacy')
plt.xticks(range(30),[],rotation=90)


plt.subplot(4,3,8) 
plt.bar(z,df['P2: Public Services'],color='c')
plt.title('P2: Public Services')
plt.xticks(range(30),[],rotation=90)


plt.subplot(4,3,9) 
plt.bar(z,df['P3: Human Rights'],color='brown')
plt.title('P3: Human Rights')
plt.xticks(range(30),[],rotation=90)


plt.subplot(4,3,10) 
plt.bar(z,df['S1: Demographic Pressures'],color='lightblue')
plt.title('S1: Demographic Pressures')
plt.xticks(range(30),df['Country'],rotation=90)

plt.subplot(4,3,11) 
plt.bar(z,df['S2: Refugees and IDPs'],color='#FFFACD')
plt.title('S2: Refugees and IDPs')
plt.xticks(range(30),df['Country'],rotation=90)

plt.subplot(4,3,12) 
plt.bar(z,df['X1: External Intervention'],color='#228B22')
plt.title('X1: External Intervention')
plt.xticks(range(30),df['Country'],rotation=90)
plt.show()

最终结果:

如果对你有用,麻烦点赞,谢谢!

 

  • 13
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值