轻松玩转Python,五个步骤打造惊艳的折线图( 二 )


轻松玩转Python,五个步骤打造惊艳的折线图

文章插图
图片
仍然是相同的折线图,但故事更清晰了
6、修改外观为本文的图表添加一些功能 , 可以使其看起来更加专业 。它们将位于所有图表的顶部,并且与本文中使用的数据无关 。
通过下面的代码片段,这些调整将很容易实现 。
读者可以根据自己的需求对其进行调整 , 以创建自己的视觉风格 。
  • 边框
边框是图表周围可见的框 。除了左边的边框会设置得稍微粗一些外,其余的边框都将被移除 。
  • 顶部的红线和矩形
在标题上方添加一条红线和一个矩形 , 以便将图表与上方的文本很好地隔离开来 。
  • 标题和副标题
添加标题来介绍图表,副标题可以用来进一步解释内容,甚至呈现初步的结论 。
  • 来源
在所有制作的图表中都必不可少的一项 。
  • 调整边距
调整图表区域周围的边距,以确保充分利用所有可用空间 。
  • 设置白色背景
将背景设置为白色(默认为透明)在通过电子邮件、Teams或任何其他工具发送图表时非常有用,因为透明背景可能会造成问题 。
# 移除边框ax.spines[['top','right','bottom']].set_visible(False)# 加粗左侧边框ax.spines['left'].set_linewidth(1.1)# 在顶部添加红线和矩形ax.plot([0.05, .9], [.98, .98], transform=fig.transFigure, clip_notallow=False, color='#E3120B', linewidth=.6)ax.add_patch(plt.Rectangle((0.05,.98), 0.04, -0.02, facecolor='#E3120B', transform=fig.transFigure, clip_notallow=False, linewidth = 0))# 添加标题和副标题ax.text(x=0.05, y=.93, s="Evolution of the 20 Richest Countries GDP over the Past 50 Years", transform=fig.transFigure, ha='left', fnotallow=14, weight='bold', alpha=.8)ax.text(x=0.05, y=.90, s="Focus on the current 5 richest countries from 1973 to 2022", transform=fig.transFigure, ha='left', fnotallow=12, alpha=.8)# 设置来源文本ax.text(x=0.05, y=0.12, s="Source: World Bank - https://databank.worldbank.org/", transform=fig.transFigure, ha='left', fnotallow=10, alpha=.7)# 调整绘图区域周围的边距plt.subplots_adjust(left=None, bottom=0.2, right=None, top=0.85, wspace=None, hspace=None)# 设置白色背景fig.patch.set_facecolor('white')
轻松玩转Python,五个步骤打造惊艳的折线图

文章插图
本文的视觉风格应用于图表 , 使其更加整洁
7、点睛之笔为了得到在文章开头介绍的最终结果,剩下要做的就是实现这几个额外的组件:
  • 终点标记
这些元素纯粹是为了美观,但能为本文的折线图增添一份亮点 。用标记突出显示每条折线的最后一个点,使其更加醒目 。
  • 注释
借助annotate方法,可以突出显示图表中的特定点,并在其上直接添加注释 。
# 绘制前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.plot(data['Year'].iloc[-1], data['GDP'].iloc[-1], 'o', color=color, markersize=10, alpha=0.3)ax.plot(data['Year'].iloc[-1], data['GDP'].iloc[-1], 'o', color=color, markersize=5)# 在图表上添加一些文字ax.annotate('During the 2000s,nChina began experiencing rapid economic growth,noutpacing all other countries.',(data['Year'].iloc[-18], 2000000000000),xytext=(data['Year'].iloc[-28]-timedelta(days=500), 18000000000000),ha='left', fnotallow=9, arrowprops=dict(arrowstyle='-|>', facecolor='k', cnotallow="arc3,rad=-0.15"))
轻松玩转Python,五个步骤打造惊艳的折线图

文章插图
图片
最终成果:这个折线图清晰易读
8、结语本文分享了使用Matplotlib绘制折线图的知识,同时提供了实用可重复使用的代码片段 。

【轻松玩转Python,五个步骤打造惊艳的折线图】


推荐阅读