前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一行代码让matplotlib图表变高大上

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

作者头像
派大星的数据屋
发布于 2022-04-03 06:01:17
发布于 2022-04-03 06:01:17
71400
代码可运行
举报
运行总次数:0
代码可运行

1 简介

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

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

2 利用dufte自动改造matplotlib图表

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

2.1 主题设置

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 局部主题设置
with plt.style.context(主题):
    # 绘图代码
    ...

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import dufte
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import font_manager

# 注册本地思源宋体
fontproperties = font_manager.FontProperties(fname='NotoSerifSC-Regular.otf')

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

  • 折线图
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 折线图示例
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')
  • 柱状图
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 柱状图示例
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()即可,以下面的折线图为例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 折线图示例
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,它就会帮我们自动往柱体上标注信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 柱状图示例
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未来势必会加入更多的实用功能,感兴趣的朋友可以对其持续关注。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
12个最常用的matplotlib图例 !!
折线图(Line Plot):用于显示数据随时间或其他连续变量的变化趋势。在实际项目中,可以用于可视化模型性能随着训练迭代次数的变化。
JOYCE_Leo16
2024/03/19
6860
12个最常用的matplotlib图例 !!
可视化技能之Matplotlib(上)|可视化系列01
Matplotlib可以说是Python最声名远扬的可视化库了,也是Python数据分析库的“三驾马车”之一。Matplotlib是基础而非常强大的可视化库,Seaborn等好用的可视化库是在前者的基础上进行的封装。Matplotlib擅长快速出简单的图、有丰富的接口进行精细化绘图、和Numpy结合做科学可视化及三维图配合默契、三维图。但也有些缺点,如不容易基于实用目的绘制有一定难度的图表(如小提琴图等)、标签等元素需指定坐标而不能自适应优化显示、难以实现交互。
蛰虫始航
2020/04/09
1.8K0
Python-matplotlib 商业图表绘制03
本篇推文为python-matplotlib 商业图表绘制的第三篇文章,主要内容为圆润柱状图的绘制,这也是我之前一直想做的事情,在浏览Matplotlib官网时,发现了一个方法,就试着进行绘制,效果还不错。接下来,我们开始
DataCharm
2021/02/22
6000
Python-matplotlib 商业图表绘制03
基于Matplotlib的高级数据可视化技术与实践探索
文章链接:https://cloud.tencent.com/developer/article/2466769
一键难忘
2024/11/21
3320
科研绘图与学术图表绘制:从入门到精通
Origin是一款强大的科研绘图软件,支持多种图表类型,数据处理和分析功能极为丰富。在这一部分,我们将详细介绍Origin的安装过程和基本设置,以确保您能够顺利运行软件。
海拥
2023/11/14
8690
【转载】matplotlib.pyplot的使用总结大全(入门加进阶)
其实一年前就有想法好好学学python里的画图库matplotlib库,主要是因为每次可视化一些结果的时候,都是搜一些别人写好的代码,看的时候感觉乱乱的,不是说别人写的乱,而是每个人在某些点上实现的方式不太一样,还有就是觉得,总用别人的,就觉得不是自己创造的,没有成就感。这段时间做了个比赛,可视化分析的时候,又在搜代码,想自己加点东西,感觉很费劲,又不知道该怎么加,所以决定好好学一下,并做好总结。
marsggbo
2021/08/12
2.3K0
【数据可视化】Matplotlib 从入门到精通学习笔记
如果将文本数据与图表数据相比较,人类的思维模式更适合于理解后者,原因在于图表数据更加直观且形象化,它对于人类视觉的冲击更强,这种使用图表来表示数据的方法被叫做数据可视化。
小小程序员
2022/11/22
5.6K0
【数据可视化】Matplotlib 从入门到精通学习笔记
Python-matplotlib 堆积柱状图绘制
在查找资料时看到了堆积柱状图,简单明了,而且绘制起来也不是很难,再结合自己的教程推文中也确实没有此类图表,即决定通过构建虚拟数据进行matplotlib堆积柱状图的绘制推文,详细内容如下:
DataCharm
2021/02/22
1.8K0
Python-matplotlib 堆积柱状图绘制
工具包 | 使用Python绘制Sci学术期刊配图
之前还在讨论Matplotlib没有很好的第三方主题库呢?这不,又被我发现了一个宝藏库,还专门用于一些学术期刊的图表发表,可谓是弥补了matplotlib 繁琐的自定义设置。好了,话不多说,今天这篇推文的主角就是Github 上拥有1.6k 星之多的科学论文图表绘制库「SciencePlots」。推文的主要内如下:
气象学家
2020/10/09
13.1K0
工具包 | 使用Python绘制Sci学术期刊配图
Matplotlib_Study01
from matplotlib.font_manager import FontProperties
Echo_Wish
2023/11/30
2560
Matplotlib_Study01
Python-matplotlib 箱线图绘制
箱线图(Boxplot) 是一种用作显示一组数据分散情况资料的统计图表,本期推文就如何使用matplotlib和seaborn 绘制出高度定制化的箱线图做出详细的讲解。
DataCharm
2021/02/22
4.4K0
Python-matplotlib 箱线图绘制
python-matplotlib
# matplotlib 画图工具 import matplotlib.pyplot as plt import pandas as pd import numpy as np from pandas.core.series import Series # 自定义数据 X = Series(np.array([1,2,3,4,5])) Y = Series(np.array([1,5,2.7,3.8,4.9])) Y1 = (np.random.random((1,5))*10)[0] X1 = [1,2,
Dean0731
2020/05/08
6410
使用Matplotlib创建基本图表的完全指南
Matplotlib 是一个功能强大的 Python 库,用于创建各种类型的图表和可视化。无论您是数据科学家、工程师还是研究人员,Matplotlib 都可以帮助您以直观的方式探索数据并传达结果。在本文中,我们将提供一个完整的指南,介绍如何使用 Matplotlib 创建基本的图表,包括折线图、散点图、柱状图和饼图。
一键难忘
2024/07/08
3070
有这5小段代码在手,轻松实现数据可视化(Python+Matplotlib)
大数据文摘作品 编译:傅一洋、吴双、龙牧雪 本文要讲的是Matplotlib,一个强大的Python可视化库。一共5小段代码,轻松实现散点图、折线图、直方图、柱状图、箱线图,每段代码只有10行,也是再简单不过了吧! 数据可视化是数据科学家工作的一项主要任务。在项目早期阶段,通常会进行探索性数据分析(EDA)以获取对数据的理解和洞察,尤其对于大型高维的数据集,数据可视化着实有助于使数据关系更清晰易懂。 同时在项目结束时,以清晰、简洁和引人注目的方式展示最终结果也是非常重要的,因为受众往往是非技术性客户,只有这
大数据文摘
2018/05/23
1.4K0
【3】超级详细matplotlib使用教程,手把手教你画图!(多个图、刻度、标签、图例等)
matplotlib的图像都位于Figure对象中,你可以用plt.figure创建一个新的Figure.在subplot上进行绘制
汀丶人工智能
2022/12/21
1.8K0
【3】超级详细matplotlib使用教程,手把手教你画图!(多个图、刻度、标签、图例等)
画出你的数据故事:Python中Matplotlib使用从基础到高级
摘要: Matplotlib是Python中广泛使用的数据可视化库,它提供了丰富的绘图功能,用于创建各种类型的图表和图形。本文将从入门到精通,详细介绍Matplotlib的使用方法,通过代码示例和中文注释,帮助您掌握如何在不同场景下灵活绘制高质量的图表。
子午Python
2023/08/27
9140
科技感爆棚!这样酷炫的Python图表谁能不爱?
色彩搭配对图表的第一印象至关重要,合理的设置对图表的颜值提升有着很大的帮助,本期推文结合一个具体例子对图表颜色搭配进行讲解。
小F
2020/12/16
7860
科技感爆棚!这样酷炫的Python图表谁能不爱?
纯干货:手把手教你用Python做数据可视化(附代码)
导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一。可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转换,或者为建模提供一些想法。对于其他人来说,构建网络交互式可视化可能是最终目标。Python有很多附加库可以用来制作静态或动态的可视化文件,但是我将主要关注matplotlib和以它为基础的库。
IT阅读排行榜
2018/09/29
5.2K0
纯干货:手把手教你用Python做数据可视化(附代码)
【Python环境】matplotlib - 2D 与 3D 图的绘制
类MATLAB API 最简单的入门是从类 MATLAB API 开始,它被设计成兼容 MATLAB 绘图函数。 让我们加载它: from pylab import * 使用 qt 作为图形后端: %matplotlib qt 示例 类MATLAB API 绘图的简单例子: from numpy import * x = linspace(0, 5, 10) y = x ** 2figure() plot(x, y, 'r') xlabel('x') ylabel('y') title('title') s
陆勤_数据人网
2018/02/27
5.8K0
【Python环境】matplotlib - 2D 与 3D 图的绘制
深度学习基础之matplotlib,一文搞定各个示例
Matplotlib 是 Python 的绘图库。它可与 NumPy 一起使用 ,Matplotlib也是深度学习的常用绘图库,主要是将训练的成果进行图形化,因为这样更直观,更方便发现训练中的问题,今天来学习下,走起!!
香菜聊游戏
2021/10/19
1.6K0
深度学习基础之matplotlib,一文搞定各个示例
推荐阅读
相关推荐
12个最常用的matplotlib图例 !!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验