【matplotlib基础】--手绘风格
Matplotlib 中有一个很有趣的手绘风格。
如果不是特别严肃的分析报告,使用这个风格能给枯燥的数据分析图表带来一些活泼的感觉。
使用手绘风格非常简单,本篇主要手绘风格的效果以及如何配置中文的支持。
1. 中文支持
Matplotlib 的手绘风格默认是不支持中文的,中文在图形中会显示成方格子。
如果本机已经安装了中文字体,直接选择相应的字体即可,否则,需要下载安装。
1.1. 字体下载
如果没有合适的中文字体,可从下面地址下载: 
https://url11.ctfile.com/f/45455611-872362386-3dafb6?p=6872 (访问密码: 6872)
这个zip包中有两个字体:
- 微软雅黑字体:中规中矩的中文字体
- 方正卡通字体:这个字体比较适合手绘风格,本篇的示例使用的就是这个字体。
1.2. 字体安装
如果是windows系统的话,字体下载后,直接双击,然后选择安装即可。linux系统的话,一般是把字体文件复制到 /usr/share/fonts 目录下。
字体安装后,可能在 Matplotlib 中不会生效,这是因为Matplotlib 对字体有缓存。
在windows中,删除缓存的字体文件(C:\Users\{登录系统的用户}\.matplotlib\fontlist-v330.json),重新运行程序,会再次生成字体缓存。
linux中,可以通过运行  fc-cache,重新生成字体缓存。
1.3. 显示效果
安装字体之后,改成手绘风格只需要添加一行代码:with plt.xkcd():
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
#绘图示例图形的函数
def draw(title="中文标题"):
    #这里使用的是方正卡通字体
    plt.rcParams.update({
        "font.family": "FZKaTong-M19S",
        "font.size": 11
    })
    x = np.array(range(10))
    y = np.random.randint(10, 100, 10)
    fig = plt.figure(figsize=[8, 6])
    fig.subplots_adjust(hspace=0.5)
    fig.add_subplot(211)
    plt.plot(x, y, label="曲线1")
    y1 = np.random.randint(10, 100, 10)
    plt.plot(x, y1, label="曲线2")
    plt.legend()
    plt.title(title)
    fig.add_subplot(212)
    plt.bar(["苹果", "橘子", "香蕉", "西瓜", "桃子"],
            height=y[:5],
            color=["b", "c", "g", "m"])
#将绘制图形的函数放在 plt.xkcd上下文中即可
with plt.xkcd():
    draw()

中文用的是方正卡通字体,和手绘风格搭配较好。
2. 手绘风格参数
手绘风格函数 plt.xkcd() 有3个主要参数,调整这3个参数,可以修正手绘的效果。
3个参数分别是:
- scale:手绘的各种线条的弯曲程度
- length:每个弯曲处的长度
- randomness:产生弯曲的随机性
2.1. scale 参数
scale 越小,弯曲程度越低。
for scale in [0.5, 2, 10]:
    with plt.xkcd(scale=scale):
        draw()



2.2. length 参数
length 参数控制每个弯曲的长度,也就是 length越大,弯曲的越平滑。
for length in [1, 10, 100]:
    with plt.xkcd(length=length):
        draw(f"length 参数 = {length}")



2.3. randomness 参数
randomness 参数控制产生弯曲的随机性,randomness越大,产生的弯曲处越多。
for randomness in [1, 10, 100]:
    with plt.xkcd(randomness=randomness):
        draw(f"randomness 参数 = {randomness}")



【matplotlib基础】--手绘风格的更多相关文章
- 手绘风格的 JS 图表库:Chart.xkcd
		本文作者:HelloGitHub-kalifun 图表库千万个今天 HelloGitHub 给大家推荐个很有"特色"的图表库:一个手绘风格的 JS 图表库 -- Chart.xkc ... 
- JavaScript手绘风格的图形库RoughJS使用指南
		RoughJS是一个轻量级的JavaScript图形库(压缩后约9KB),可以让你在网页上绘制素描风格.手绘样式般的图形.RoughJS定义了绘制直线,曲线,圆弧,多边形,圆和椭圆的图元,同时它还支持 ... 
- 免费下载:320+ 手绘风格 Apple iOS7 图标
		Themify 图标是一套用在网页设计和应用程序的图标,包括 320+ 手工制作的像素完美的苹果 iOS7 图标中汲取灵感.这些图标完全免费,您可以用于任何目的,无论是个人或商业. 您可能感兴趣的相 ... 
- Python中使用cutecharts实现简单的手绘风格的图表
		场景 效果 cutecharts的Github: https://github.com/chenjiandongx/cutecharts 注: 博客: https://blog.csdn.net/ba ... 
- Python绘图还在用Matplotlib?out了 !发现一款手绘可视化神器!
		前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. GitHub 地址:https://github.com/chenjian ... 
- 发现一款手绘可视化神器!Python绘图还在用Matplotlib?out了 !
		前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取htt ... 
- [置顶] 内存管理一点也不神秘————手绘iOS内存管理细节
		今天给大家带来的一篇手绘风格博文<内存管理一点也不神秘> 每当我们程序执行alloc/new/copy/mutableCopy的时候,当我们执行release的时候,当我们执行retain ... 
- 你也可以手绘二维码(二)纠错码字算法:数论基础及伽罗瓦域GF(2^8)
		摘要:本文讲解二维码纠错码字生成使用到的数学数论基础知识,伽罗瓦域(Galois Field)GF(2^8),这是手绘二维码填格子理论基础,不想深究可以直接跳过.同时数论基础也是 Hash 算法,RS ... 
- UWP 手绘视频创作工具技术分享系列 - 有 AI 的手绘视频
		AI(Artificial Intelligence)正在不断的改变着各个行业的形态和人们的生活方式,图像识别.语音识别.自然语言理解等 AI 技术正在自动驾驶.智能机器人.人脸识别.智能助理等领域中 ... 
- UWP 手绘视频创作工具技术分享系列 - 全新的 UWP 来画视频
		从2017年11月开始,我们开始规划和开发全新的来画Pro,在12月23日的短视频峰会上推出了预览版供参会者体验,得到了很高的评价和关注度.吸取反馈建议后,终于在2018年1月11日正式推出了全新版本 ... 
随机推荐
- python利用subprocess执行shell命令
			subprocess以及常用的封装函数 运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序.在Python中 ... 
- 【2023 · CANN训练营第一季】昇腾AI入门Pytorch
			昇腾AI全栈架构 华为AI全栈全场景解决方案为4层,分别为芯片层.芯片使能层.AI框架层和应用使能层. 芯片 基于统一.可扩展架构的系列化AI IP和芯片,为上层加速提供硬件基础. 芯片产品:昇腾31 ... 
- spring-boot-maven-plugin插件详解
			一. 为什么Spring Boot项目自带这个插件 当我们在SpringBoot官方下载一个脚手架时,会发现pom.xml会自带spring-boot-maven-plugin插件 <?xml ... 
- kafka学习笔记03消息队列的两种模式
			①点对点模式 该种模式就是消费者会自动消费消息,消息收到之后会向消息队列进行确认收到消息,然后将该数据进行删除. ②发布/订阅模式 可以有多个的topic,topic在英语中有主题的意思, ... 
- Oracle sql 错误 : ORA-01861: 文字与格式字符串不匹配和日期与字符串互转问题解决
			正确的要这样的: public int update(String ceratedate); <update id="update" parameterType=" ... 
- rocketmq-console基本使用
			rocketmq-console基本使用 作用:rocketmq-console是rocketmq的一款可视化工具,提供了mq的使用详情等功能. 一.安装部署 下载rocketmq组件 rocketm ... 
- 浏览器手动设置Cookie
			浏览器手动设置Cookie js代码: document.cookie="{KEY}={Value}": 可多次执执行. 
- 1.1 熟悉x64dbg调试器
			x64dbg 是一款开源.免费.功能强大的动态反汇编调试器,它能够在Windows平台上进行应用程序的反汇编.调试和分析工作.与传统的调试器如Ollydbg相比,x64dbg调试器的出现填补了Olly ... 
- 【Python】爬虫-Xpath
			Xpath 文章参考:https://www.cnblogs.com/mxjhaima/p/13775844.html#案例 安装 pip install lxml 引用 from lxml impo ... 
- 面由 AI 生|ZegoAvatar 捏脸技术解析
			一.AI"卷"进实时互动 2021年,元宇宙概念席卷全球,国内各大厂加速赛道布局,通过元宇宙为不同的应用场景的相关内容生态进行赋能.针对"身份"."沉 ... 
