1、简介
文章插图
图片
最富有的5个国家的GDP随时间的演变
Matplotlib可以快速轻松地使用现成的函数绘制图表,但是微调步骤需要花费更多精力 。今天就来介绍如何使用Matplotlib绘制吸引人的图表 。
本文详细介绍如何从下面这张图↓
文章插图
图片
优化为下面这张图↓
文章插图
图片
2、数据为了说明方法,本文使用了包含过去50年各国GDP信息的公开数据集:
来源:世界银行国民账户数据和OECD(经济合作与发展组织)国民账户数据文件 。
许可证URL:https://datacatalog.worldbank.org/public-licenses#cc-by
导入必要的软件包、读取数据、绘制图表,对2022年的GDP前20个国家进行筛?。?
import pandas as pdimport matplotlib.pyplot as pltfrom datetime import timedelta# 读取数据df = pd.read_csv('88a1e584-0a94-4e73-b650-749332831ef4_Data.csv', sep=',')df.drop(['Series Name', 'Series Code', 'Country Code'], axis=1, inplace=True)df = df.dropna(subset=['Country Name'])# 对 2022 年最富有的 20 个国家进行筛选top_20_countries = df[df['Year'] == '2022-01-01'].sort_values('GDP', ascending = False).head(20)['Country Name'].tolist()df = df[df['Country Name'].isin(top_20_countries)].reset_index(drop = True)df.head()
3、基本图首先,只需四行代码就足以创建图形,并循环遍历各国以绘制它们各自的折线:# 创建图形和坐标轴对象,指定尺寸和DPIfig, ax = plt.subplots(figsize=(13.33,7.5), dpi = 96)# 绘制折线for country in top_20_countries:data = https://www.isolves.com/it/cxkf/yy/Python/2023-11-13/df[df['Country Name'] == country]line = ax.plot(data['Year'], data['GDP'], label=country)
文章插图
最基本的Matplotlib折线图
4、基本要素接下来向图表中添加一些关键内容,使其更易于观众阅读 。
- 网格
- X轴和Y轴重新格式化
- 图例
# 添加图例ax.legend(loc="best", fnotallow=8)# 创建网格ax.grid(which="major", axis='x', color='#DAD8D7', alpha=0.5, zorder=1)ax.grid(which="major", axis='y', color='#DAD8D7', alpha=0.5, zorder=1)# 重新格式化x轴标签和刻度线标签ax.set_xlabel('', fnotallow=12, labelpad=10) # 不需要轴标签ax.xaxis.set_label_position("bottom")#ax.xaxis.set_major_formatter(lambda s, i : f'{s:,.0f}') #以防万一我们需要额外的格式设置#ax.xaxis.set_major_locator(MaxNLocator(integer=True)) #以防我们需要额外的格式化ax.xaxis.set_tick_params(pad=2, labelbottom=True, bottom=True, labelsize=12, labelrotatinotallow=0)# 重新格式化y轴ax.set_ylabel('GDP (Billions USD)', fnotallow=12, labelpad=10)ax.yaxis.set_label_position("left")ax.yaxis.set_major_formatter(lambda s, i : f'{s*10**-9:,.0f}')#ax.yaxis.set_major_locator(MaxNLocator(integer=True)) #以防我们需要额外的格式化ax.yaxis.set_tick_params(pad=2, labeltop=False, labelbottom=True, bottom=False, labelsize=12)
文章插图
图片
为本文的图表添加一些必要的功能
5、突出重点接下来,突出显示最富有的五个国家 , 并跟踪其GDP随时间的变化 。在字典中定义了特定的颜色和线条样式,并对代码稍作修改,以单独绘制它们 。
# 颜色和线条样式colors_dict = {'United States': '#014f86', 'China': '#DC0000', 'Japan': '#ff4d6d', 'Germany': '#403d39', 'India': '#6a994e'}line_styles_dict = {'United States': '-', 'China': '-', 'Japan': '-', 'Germany': '-', 'India': '-'}# 绘制前5条线for country in top_20_countries[:5]:color = colors_dict.get(country, 'grey')# 从字典中获取颜色 , 如果找不到,默认为灰色line_style = line_styles_dict.get(country, '-')# 从字典中获取线条样式,如果未找到,默认为实线data = https://www.isolves.com/it/cxkf/yy/Python/2023-11-13/df[df['Country Name'] == country]line = ax.plot(data['Year'], data['GDP'], color=color, linestyle=line_style, zorder=2, label=country)# 添加图例ax.legend(loc="best", fnotallow=8)# 绘制剩余部分for country in top_20_countries[5:]:data = df[df['Country Name'] == country]line = ax.plot(data['Year'], data['GDP'], color='grey', linestyle=':', linewidth=0.5, zorder=2)
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MySQL数据删除绝招,轻松搞定数据清除
- 掌握Python的解包技巧:*和**的最全用法
- 避免Python乱码陷阱:字符编码详解
- 从零到SQL注入防护大师,打造安全的Python应用程序
- 轻松快速剥石榴过程 轻松快速剥石榴过程图片
- 懒人瘦肚子的最快方法 懒人瘦肚子的最快方法,只需三个动作,就能轻松瘦!
- 新凉鞋磨脚怎么办 8个小妙招轻松就解决 新买的凉鞋磨脚如何办
- 海清,轻松减重20斤,附有三餐食谱和3个技巧,你也能90斤
- “脂肪”最怕这个菜,两天吃一次,清甜脆爽,轻松刮油,比肉还香
- 如何轻松除去地面毛发 如何轻松除去地面毛发味道