为了让自己的图片更加炫酷,我们今天请到了嘉宾subplot()函数,可以让我们实现多子图的效果。数据采用的是18年美赛E题的数据。在进行标准化处理以后进行的可视化。先上效果图
目录
一、函数介绍
二、相关代码及数据
2.1 数据处理及展示
2.2 全部代码含注释
最终结果:
1.plt.subplot(nrows,ncols,index) 创建子图
2. nrows参数指定将数据图区域划分成几行
3. ncols参数指定将数据图区域分成多少列
4. index 参数指定获取第几个区域
2018年的美赛E题是制作国家脆弱性指数预测模型,数据来自于题目中提供的网址。数据一共有12项指标,为了统一,我们进行最大最小标准化法进行0-1标准化。
如果不知道怎么怎么读取数据可以参考我之前的博客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()
如果对你有用,麻烦点赞,谢谢!