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未来势必会加入更多的实用功能,感兴趣的朋友可以对其持续关注。

——END——

最近发现一个点外卖每顿饭都能少花5-20元的宝藏号。

就是她,↓点击下面名片关注公众号↓

进入公众号点击菜单领取红包最低5元,最高56元!

一行代码让matplotlib图表变高大上相关推荐

  1. 神奇的Python-实现曼德布洛特(Mandelbrot)集合(一行代码,matplotlib numpy,tensorflow)分别实现

    神奇的Python-实现曼德布洛特(Mandelbrot)集合(一行代码,matplotlib numpy,tensorflow)分别实现 Mandelbrot图实际上是由Mandelbrot集合构成 ...

  2. 网站变灰代码,一行代码让网站整体变灰,wordpress网站一行代码全站变灰教程

    在遇到特殊情况的时候,我们作为站长需要紧急将网站变灰的需求,在此小编给大家总结了几种方法,通过简单修改一下站点样式即可实现.一段代码让网站整体变灰.这里主要介绍的利用 filter: grayscal ...

  3. 一行代码,Pandas秒变分布式,快速处理TB级数据

    夏乙 发自 凹非寺 量子位 出品 | 公众号 QbitAI 刚刚在Pandas上为十几KB的数据做好了测试写好了处理脚本,上百TB的同类大型数据集摆到了面前.这时候,你可能面临着一个两难的选择: 继续 ...

  4. Android 状态栏工具——一行代码实现状态栏字体变黑

    个人网站 参考了一些文章做了一些修改,变成了自己的工具类.其中有很多地方欠考虑,有待改进,欢迎路过的大佬给点建议. 状态栏(一) 状态栏(二) 经过前两篇的介绍我们对如何修改状态栏的效果有了大致的了解 ...

  5. 一行代码让网站整体变黑色

    转载:https://mp.weixin.qq.com/s?__biz=MzAxOTcxNTIwNQ==&mid=2457918922&idx=1&sn=097bd80a667 ...

  6. 一行代码,让你变得有钱

    本期代码: CreateObject("SAPI.SpVoice").Speak"支付宝到账,一百千万亿元" 后缀名为.vbs 点开后会说"支付宝到账 ...

  7. 【Python】科研论文绘图实操干货汇总,11类Matplotlib图表,含代码

    作者丨数据派THU 来源丨DataScience 编辑丨极市平台 导读 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形.通过 ...

  8. 超全万字汇总!科研论文绘图实操干货!11类Matplotlib图表,含代码

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 Matplotlib 是一个 Python 的 2D绘图库, ...

  9. 科研论文绘图实操干货汇总,11类Matplotlib图表,含代码

    作者丨数据派THU 来源丨DataScience 编辑丨极市平台 导读 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形.通过 ...

最新文章

  1. CCF-201612-3 -权限查询
  2. python之常见问题集锦
  3. Python TypeError: takes no arguments
  4. Android开发之EditText输入显示文字hint大小设置
  5. excel条件格式详解
  6. PythonRabbitmq文档阅读笔记-生产者数据直接送入队列消费者消费
  7. 区块链风口下,开发者下海是否为时已晚?
  8. 小小的起步VMware vSphere之二
  9. # 异运算_人教版六年级数学下册第29课数的运算(P7680)图文视频辅导
  10. c 语言所有符号,c语言 符号
  11. 差分探头和隔离探头有什么区别
  12. 极乐净土html5代码,天谕手游极乐净土乐谱代码分享
  13. 使用Graghics2D实现证书签字盖章功能总结
  14. steam错误代码 -118 ; 443/80或其他端口被占用,请关闭占用该端口的进程后再点击启动服务 ; 关闭端口进程
  15. 在Abaqus中怎么施加初始应力
  16. Latex添加中文支持和A4纸张设置
  17. Chapter 20-APIs(应用程序编程接口)
  18. 配置MyBatis Plus 的乐观锁功能
  19. Node.js的线程和进程*2014年4月的文章
  20. 卡饭PDF转换器之CAJ转换

热门文章

  1. 大型软件公司.Net面试题(二)
  2. SpringBoot基础重难点
  3. MYSQL导出数据出现The MySQL server is running with the --secure-file-priv option so it cannot execute this
  4. PHP算法为数组补全不存在的键
  5. Linux的Nginx八:服务器配置
  6. fatjar打包mysql_一个简单的解压ZIP Excl文件---gt;按时间读取Excle文件,通过Fat jar打成jar相对应的添加到mysql数据库中。 - 明月 - ITeye博客...
  7. PHP中一些可用的方法
  8. java中coverage怎么取消_别人家的ABM都是怎么成功的?
  9. ubuntu16.04无法连接WiFi搜索不到网络网卡驱动
  10. java bmp rgb数组_将RGB数据写入BMP位图文件