一行代码让matplotlib图表变高大上

简介: 一行代码让matplotlib图表变高大上

1 简介

matplotlib作为Python生态中最流行的数据可视化框架,虽然功能非常强大,但默认样式比较简陋,想要制作具有简洁商务风格的图表往往需要编写众多的代码来调整各种参数。

而今天要为大家介绍的dufte,就是用来通过简短的代码,对默认的matplotlib图表样式进行自动改造的Python库:


2 利用dufte自动改造matplotlib图表

通过pip install dufte安装完成后,我们就可以将dufte的几个关键API穿插在常规matplotlib图表的绘制过程中,目前主要有以下几种功能:

2.1 主题设置

dufte最重要的功能是其自带的主题风格,而在matplotlib中有两种设置主题的方式,一种是利用plt.style.use(主题)来全局设置,一般不建议这种方式。

另一种方式则是以下列方式来在with的作用范围内局部使用主题:

# 局部主题设置
with plt.style.context(主题):
    # 绘图代码
    ...

我们今天就都使用第二种方式,首先导入演示所需的依赖库,并从本地注册思源宋体

import dufte
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import font_manager
# 注册本地思源宋体
fontproperties = font_manager.FontProperties(fname='NotoSerifSC-Regular.otf')

接下来我们以折线图和柱状图为例:

  • 折线图
# 折线图示例
with plt.style.context(dufte.style):
    x = range(100)
    y = np.random.standard_normal(100).cumsum()
    
    fig, ax = plt.subplots(figsize=(10, 5), facecolor='white', edgecolor='white')
    
    ax.plot(x, y, linestyle='-.', color='#607d8b')
    
    ax.set_xlabel('x轴示例', fontproperties=fontproperties, fontsize=16)
    ax.set_ylabel('y轴示例', fontproperties=fontproperties, fontsize=16)
    
    ax.set_title('折线图示例', fontproperties=fontproperties, fontsize=20)
    fig.savefig('图2.png', dpi=300, bbox_inches='tight')

  • 柱状图
# 柱状图示例
with plt.style.context(dufte.style):
    x = range(25)
    y = np.random.standard_normal(25)
    fig, ax = plt.subplots(figsize=(10, 5), facecolor='white', edgecolor='white')
    
    ax.bar(x, y)
    
    ax.set_xlabel('x轴示例', fontproperties=fontproperties, fontsize=16)
    ax.set_ylabel('y轴示例', fontproperties=fontproperties, fontsize=16)
    
    ax.set_title('柱状图示例', fontproperties=fontproperties, fontsize=20)
    fig.savefig('图3.png', dpi=300, bbox_inches='tight')

可以看到,dufte自带了一套简洁的绘图风格,主张去除多余的轴线,只保留必要的参考线,适用于我们日常工作中的通用出图需求。

2.2 自动图例美化

除了前面介绍的整体主题风格之外,dufte还自带了一套图例风格化策略,只需要在绘图过程中利用dufte.legend()来代替matplotlib原有的legend()即可,以下面的折线图为例:

# 折线图示例
with plt.style.context(dufte.style):
    x = range(100)
    y1 = np.random.randint(-5, 6, 100).cumsum()
    y2 = np.random.randint(-5, 10, 100).cumsum()
    y3 = np.random.randint(-5, 6, 100).cumsum()
    
    fig, ax = plt.subplots(figsize=(10, 5), facecolor='white', edgecolor='white')
    
    ax.plot(x, y1, linestyle='dotted', label='Series 1')
    ax.plot(x, y2, linestyle='dashed', label='Series 2')
    ax.plot(x, y3, linestyle='dashdot', label='Series 3')
    
    ax.set_xlabel('x轴示例', fontproperties=fontproperties, fontsize=16)
    ax.set_ylabel('y轴示例', fontproperties=fontproperties, fontsize=16)
    dufte.legend()
    ax.set_title('dufte.legend()示例', fontproperties=fontproperties, fontsize=20)
    fig.savefig('图4.png', dpi=300, bbox_inches='tight')

可以看到,对于多系列图表,只需要一行dufte.legend()就可以自动添加出下列别致的图例说明:

2.3 柱状图自动标注

很多时候我们在绘制柱状图时,希望把每个柱体对应的y值标注在柱体上,而通过dufte.show_bar_values(),只要其之前的绘图流程中设置了xticks,它就会帮我们自动往柱体上标注信息:

# 柱状图示例
with plt.style.context(dufte.style):
    x = range(15)
    y = np.random.randint(5, 15, 15)
    fig, ax = plt.subplots(figsize=(10, 5), facecolor='white', edgecolor='white')
    
    ax.bar(x, y)
    
    ax.set_xticks(x)
    ax.set_xticklabels([f'项目{i}' for i in x], fontproperties=fontproperties, fontsize=10)
    dufte.show_bar_values()
    
    ax.set_xlabel('x轴示例', fontproperties=fontproperties, fontsize=16)
    ax.set_ylabel('y轴示例', fontproperties=fontproperties, fontsize=16)
    
    ax.set_title('柱状图示例', fontproperties=fontproperties, fontsize=20)
    fig.savefig('图5.png', dpi=300, bbox_inches='tight')

作为一个处于开发初期的库,dufte未来势必会加入更多的实用功能,感兴趣的朋友可以对其持续关注。

相关文章
|
6天前
|
数据可视化 Python
Python中的数据可视化:使用Matplotlib绘制图表
【9月更文挑战第11天】在这篇文章中,我们将探索如何使用Python的Matplotlib库来创建各种数据可视化。我们将从基本的折线图开始,然后逐步介绍如何添加更多的功能和样式,以使您的图表更具吸引力和信息量。无论您是数据科学家、分析师还是任何需要将数据转化为视觉形式的专业人士,这篇文章都将为您提供一个坚实的起点。让我们一起潜入数据的海洋,用视觉的力量揭示其背后的故事。
29 16
|
19天前
|
数据可视化 物联网 区块链
探索Python中的数据可视化:使用Matplotlib和Seaborn绘制图表探索未来:区块链、物联网与虚拟现实的融合趋势与应用前景
【8月更文挑战第30天】本文旨在引导读者通过Python编程语言,利用Matplotlib和Seaborn库,轻松掌握数据可视化技术。文章以浅显易懂的语言,结合实用的代码示例,从基础的图表绘制到高级定制功能,逐步深入讲解如何在数据分析中运用这些工具。无论你是编程新手还是希望提升可视化技能的开发者,都能在这篇文章中找到有价值的信息,让你的数据“活”起来。
|
23天前
|
数据可视化 Python
Matplotlib基本图表的完全指南
【8月更文挑战第21天】Matplotlib 是一款强大的 Python 图表库,适用于数据科学家、工程师及研究人员,帮助直观地探索与展示数据。本文全面介绍了 Matplotlib 的使用方法:从安装到导入库,再到创建基础图表如折线图、散点图、柱状图及饼图。此外还探讨了图表样式的自定义、子图的使用、图表保存以及利用数据集绘图的方法。文章进一步展示了如何绘制多系列数据、应用样式表,并提供了三维图等高级功能的示例。通过这些指南,读者能够掌握 Matplotlib 的基本与进阶用法,从而有效地可视化复杂数据。
39 6
|
19天前
|
机器学习/深度学习 数据可视化 数据挖掘
Python中的数据可视化:使用Matplotlib库绘制图表
【8月更文挑战第30天】数据可视化是数据科学和分析的关键组成部分,它帮助我们以直观的方式理解数据。在Python中,Matplotlib是一个广泛使用的绘图库,提供了丰富的功能来创建各种类型的图表。本文将介绍如何使用Matplotlib库进行数据可视化,包括安装、基本概念、绘制不同类型的图表以及自定义图表样式。我们将通过实际代码示例来演示如何应用这些知识,使读者能够轻松地在自己的项目中实现数据可视化。
|
27天前
|
数据可视化 数据挖掘 Python
数据可视化不再难!Matplotlib带你轻松绘制精美图表,让数据分析焕发光彩!
【8月更文挑战第22天】今天分享如何用Python的Matplotlib库绘制多样图表。Matplotlib是数据可视化的强大工具,对数据分析至关重要。本文分六部分:首先介绍环境准备,包括安装和配置;随后通过四个案例演示折线图、柱状图、饼图及散点图的绘制方法;最后总结并鼓励大家进一步探索Matplotlib的丰富功能。跟着示例操作,你将学会基本图表的制作,提升数据展示技能。
22 0
|
29天前
|
数据可视化 Python
Python的Matplotlib库创建动态图表
【8月更文挑战第19天】Matplotlib是Python中广泛使用的数据可视化库,擅长生成静态图表如折线图、散点图等。本文介绍如何利用其创建动态图表,通过动画展示数据变化,加深对数据的理解。文章涵盖动态折线图、散点图、柱状图、饼图及热力图的制作方法,包括开启交互模式、更新数据和重绘图表等关键步骤,帮助读者掌握Matplotlib动态图表的实用技巧。
36 0
|
2月前
|
机器学习/深度学习 数据可视化 搜索推荐
Matplotlib数据可视化图表
【7月更文挑战第11天】Python的Matplotlib库是数据可视化的首选工具,支持创建各种图表,如折线图、柱状图、散点图、饼图、箱线图、热图等。安装Matplotlib可使用`conda`或`pip`。通过简单代码示例展示了如何绘制这些图表,包括自定义样式、动态更新及保存图表为图片文件。数据可视化对于理解和传达数据洞察至关重要。
44 3
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。
【7月更文挑战第5天】了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。数据预处理涉及缺失值(dropna(), fillna())和异常值处理。使用describe()进行统计分析,通过Matplotlib和Seaborn绘图。回归和分类分析用到Scikit-learn,如LinearRegression和RandomForestClassifier。
63 3
|
2月前
|
数据采集 数据可视化 数据处理
我们来看一个简单的`matplotlib`代码示例,它使用`plot()`和`scatter()`函数来绘制二维图形。
我们来看一个简单的`matplotlib`代码示例,它使用`plot()`和`scatter()`函数来绘制二维图形。
|
3月前
|
Python
【随手记】贴一段matplotlib绘图的多图拼接代码
【随手记】贴一段matplotlib绘图的多图拼接代码
43 1