当前位置:首页 > 公众号精选 > AI科技大本营
[导读]作者|费弗里来源|Python大数据分析本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes1简介长久以来,在使用matplotlib进行绘图时,一直都没有比较方便的办法像R中的ggte...

matplotlib 可视化必知必会富文本绘制方法


作者 | 费弗里


来源 | Python大数据分析


本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes



1 简介

长久以来,在使用matplotlib进行绘图时,一直都没有比较方便的办法像R中的ggtext那样,向图像中插入整段的混合风格富文本内容,譬如下面的例子:matplotlib 可视化必知必会富文本绘制方法而几天前我在逛github的时候偶然发现了一个叫做flexitext的第三方库,它设计了一套类似ggtext的语法方式,使得我们可以用一种特殊的语法在matplotlib中构建整段富文本,下面我们就来get它吧~

2 使用flexitext在matplotlib中创建富文本

在使用pip install flexitext完成安装之后,我们使用下列语句导入所需模块:from flexitext import flexitext

2.1 基础用法

flexitext中定义富文本的语法有些类似html标签,我们需要将施加了特殊样式设置的内容包裹在成对的<>与中,并在<>中以属性名:属性值的方式完成各种样式属性的设置,譬如我们想要插入一段混合了不同粗细、色彩以及字体效果的富文本:from flexitext import flexitext
import matplotlib.pyplot as plt

# 将幼圆与楷体插入到matplotlib字体库中
plt.rcParams['font.sans-serif'] = ['YouYuan', 'KaiTi']   plt.rcParams['font.sans-serif']

fig, ax = plt.subplots(figsize=(9, 6))

flexitext(0.5,
0.5,
'''这是一段flexitext富文本测试''',
ha="center");
matplotlib 可视化必知必会富文本绘制方法很舒服!我们使用flexitext()来替换ax.text()方法,它在兼容了ax.text()关于文字坐标以及对齐方式等常规参数的同时,帮助我们以特殊的格式定义文本内容及样式风格,下面我们就来进一步学习flexitext中支持的各种参数设置。

2.2 flexitext标签中的常用属性参数

在前面的例子中我们在标签中使用到了size、color、weight以及name等属性参数,而flexitext中标签支持的常用属性参数如下:

2.2.1 利用size设置文本像素大小

size属性非常简单,其用于定义标签所包裹文本内容的像素尺寸:fig, ax = plt.subplots(figsize=(9, 6))

flexitext(0.5,
0.5,
'size=20size=30size=40size=50',
ha="center")

plt.savefig('图3.png', dpi=300)
matplotlib 可视化必知必会富文本绘制方法

2.2.2 利用name设置字体

name属性可以用来设置具体的字体名称,关于matplotlib中的字体设置相关知识你可以参考我以前写过的「搞定matplotlib中的字体设置」https://www.cnblogs.com/feffery/p/14122415.html,下面分别演示系统自带的字体,以及自行注册导入的自定义字体是如何在flexitext中使用的(其中每种字体的name你可以通过font_manager.fontManager.ttflist查看):from matplotlib import font_manager

# 从本地文件中注册新字体
font_manager.fontManager.addfont('Dark Twenty.otf')
font_manager.fontManager.addfont('Yozai-Regular.ttf')
font_manager.fontManager.addfont('LXGWWenKai-Regular.ttf')

fig, ax = plt.subplots(figsize=(9, 6))

flexitext(0.5,
0.5,
'Dark Twenty\n悠哉字体\n霞鹜文楷',
ha="center")

plt.savefig('图4.png', dpi=300)
matplotlib 可视化必知必会富文本绘制方法

2.2.3 利用weight设置文本字体粗细

weight属性用于设置文本的粗细程度,可传入0到1000之间的数值,或是ultralight、light、normal、regular、book、medium、roman、semibold、demibold、demi、bold、heavy、extra bold、black中的选项,不过这个属性依赖具体的字体族(flexitext中使用family属性来定义)是否包含对应的粗细版本,所以有时候设置无效是正常的,譬如下面的例子中Times New Roman是完整的字体族,因此可以设置粗细:fig, ax = plt.subplots(figsize=(9, 6))

flexitext(0.5,
0.5,
(
'weight:regular\n'
'weight:bold\n'
'霞鹜文楷bold无效'
),
ha="center",
ma='center')

plt.savefig('图5.png', dpi=300)
matplotlib 可视化必知必会富文本绘制方法

2.2.4 利用color、backgroundcolor设置文本颜色及背景色

color与backgroundcolor属性接受matplotlib中合法的颜色值输入,可用于对标签所囊括文本的色彩及背景色进行设置,譬如下面我们配合调色库palettable来制作一些花里胡哨的文字:from palettable.colorbrewer.diverging import Spectral_6

fig, ax = plt.subplots(figsize=(9, 6))

text = ''
for i, s in enumerate(list('制造一场彩虹')):
text  = '{}'.format(Spectral_6.hex_colors[i], s)

flexitext(0.5,
0.6,
text,
ha="center",
ma='center')

flexitext(0.5,
0.4,
'制造一场彩虹'.format(Spectral_6.hex_colors[2]),
ha="center",
ma='center')

plt.savefig('图6.png', dpi=300)
matplotlib 可视化必知必会富文本绘制方法

2.2.5 利用alpha调节文字透明度

alpha参数则用于设置文字的透明度,取值在0到1之间,来看一个简单的例子:import numpy as np

fig, ax = plt.subplots(figsize=(9, 6))

flexitext(0.5,
0.4,
('绘'*9).format(
*np.linspace(1, 0, 9).tolist()
),
ha="center",
ma='center')

plt.savefig('图7.png', dpi=300)
matplotlib 可视化必知必会富文本绘制方法关于flexitext的其余可用参数等信息,感兴趣的朋友可以自行前往官方仓库进行查看:https://github.com/tomicapretto/flexitext以上就是本文的全部内容呦~matplotlib 可视化必知必会富文本绘制方法



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭