Python 数据分析三剑客之 Matplotlib(二):文本描述 / 中文支持 / 画布 / 网格等基本图像属性

小黄人番外短片合集 — 第8集【Banana Song 香蕉之歌 歌词版】


Matplotlib 系列文章(持续更新中):



这里是一段防爬虫文本,请读者忽略。
本文原创首发于 CSDN,作者 TRHX。
博客首页:https://itrhx.blog.csdn.net/
本文链接:https://itrhx.blog.csdn.net/article/details/105828049

【1x00】添加文本描述

【1x01】添加标题:matplotlib.pyplot.title()

matplotlib.pyplot.title() 方法可为图表添加标题。

基本语法:matplotlib.pyplot.title(label[, fontdict=None, loc=None, pad=None])

参数 描述
label str 类型,标题文字
fontdict 字典类型,控制标题文本外观,可选项,默认值为:
{'fontsize': rcParams['axes.titlesize'],
'fontweight' : rcParams['axes.titleweight'],
'color' : rcParams['axes.titlecolor'],
'verticalalignment': 'baseline',
'horizontalalignment': loc}
loc str 类型,可选项,三个可选值:center、left、right,默认为 rcParams["axes.titlelocation"](默认为 center
pad float 类型,可选项,标题距轴顶部的偏移量(以磅为单位)。如果为 None,则默认为 rcParams["axes.titlepad"](默认为:6.0)

应用举例:

import matplotlib.pyplot as plt

x = range(2, 26, 2)
y = range(0, 12)
plt.title('This is a title')
plt.plot(x, y)
plt.show()

01

【1x02】为坐标轴添加标签:matplotlib.pyplot.xlabel() / ylabel()

matplotlib.pyplot.xlabel():为 x 轴添加标签;
matplotlib.pyplot.ylabel():为 y 轴添加标签。

基本语法:
matplotlib.pyplot.xlabel(xlabel[, fontdict=None, labelpad=None])
matplotlib.pyplot.ylabel(ylabel[, fontdict=None, labelpad=None])

参数 描述
xlabel / ylabel str 类型,要添加的文本信息
fontdict 字典类型,控制标题文本外观,可选项,默认值为:
{'fontsize': rcParams['axes.titlesize'],
'fontweight' : rcParams['axes.titleweight'],
'color' : rcParams['axes.titlecolor'],
'verticalalignment': 'baseline',
'horizontalalignment': loc}
labelpad float 类型,可选项,x 轴标签距离 x 轴的距离

应用举例:

import matplotlib.pyplot as plt

x = range(2, 26, 2)
y = range(0, 12)
a = [5, 10, 15, 20, 25, 30]
b = [3, 4, 5, 6, 7, 8]

plt.title('This is a title')
plt.xlabel('This is x label', fontdict={'fontsize': 15, 'fontweight': 'bold', 'color': 'red'}, labelpad=15.0)
plt.ylabel('This is y label', fontsize=10, fontweight='light', color='blue', labelpad=15.0)

plt.plot(x, y)
plt.plot(a, b)

plt.show()

02

【1x03】任意位置添加文本:matplotlib.pyplot.text()

matplotlib.pyplot.text() 方法可以在画布上任意位置添加文本描述。

基本语法:matplotlib.pyplot.text(x, y, s[, fontdict=None, withdash=<deprecated parameter>])

参数 描述
x, y 放置文本的坐标位置
s str 类型,要添加的文本信息
fontdict 字典类型,控制标题文本外观,可选项,默认值为:
{'fontsize': rcParams['axes.titlesize'],
'fontweight' : rcParams['axes.titleweight'],
'color' : rcParams['axes.titlecolor'],
'verticalalignment': 'baseline',
'horizontalalignment': loc}
withdash bool 类型,可选项,默认为 False,创建一个 TextWithDash 实例而不是一个 Text 实例

应用举例:

import matplotlib.pyplot as plt

plt.rcParams['lines.marker'] = 'o'  # 设置线条上点的形状
a = [5, 10, 15, 20, 25, 30]
b = [3, 4, 5, 6, 7, 8]

plt.title('This is a title')
plt.xlabel('This is x label')
plt.ylabel('This is y label')

plt.text(4, 3.2, 'text1')
plt.text(9, 4.2, 'text2')
plt.text(14, 5.2, 'text3')
plt.text(19, 6.2, 'text4')
plt.text(24, 7.2, 'text5')
plt.text(27.5, 7.9, 'text6')

plt.plot(a, b)

plt.show()

03

【2x00】设置中文显示

【2x01】常见系统自带文字及其英文名称

Windows 系统中常见自带字体:

字体 英文名称
黑体 SimHei
宋体 SimSun
新宋体 NSimSun
仿宋 FangSong
仿宋_GB2312 FangSong_GB2312
楷体_GB2312 KaiTi_GB2312
楷体 KaiTi
微软正黑 Microsoft JhengHei
微软雅黑 Microsoft YaHei
细明体 MingLiU
标楷体 DFKai-SB
新细明体 PMingLiU

装有 office 后新添加的字体:

字体 英文名称
隶书 LiSu
幼圆 YouYuan
华文细黑 STXihei
华文楷体 STKaiti
华文宋体 STSong
华文中宋 STZhongsong
华文仿宋 STFangsong
方正舒体 FZShuTi
方正姚体 FZYaoti
华文彩云 STCaiyun
华文琥珀 STHupo
华文隶书 STLiti
华文行楷 STXingkai
华文新魏 STXinwei

Mac OS 系统中常见自带字体:

字体 英文名称
华文细黑 STHeiti Light / STXihei
华文黑体 STHeiti
华文楷体 STKaiti
华文宋体 STSong
华文仿宋 STFangsong
丽黑 Pro LiHei Pro Medium
丽宋 Pro LiSong Pro Light
标楷体 BiauKai
苹果丽中黑 Apple LiGothic Medium
苹果丽细宋 Apple LiSung Light

【2x02】指定全局字体:rcParams

通过 rcParams['font.sans-serif'] 可以配置全局字体。

优点:只需设置一次即可显示所有中文;缺点:污染全局,无法对单个中文设置字体。

应用举例:

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']   # 配置全局字体为微软雅黑
plt.rcParams['axes.unicode_minus'] = False              # 部分字体负号会显示乱码,可添加此参数进行配置
a = [-15, -10, -5, 20, 25, 30]
b = [-5, -4, -3, 6, 7, 8]

plt.title('这是中文标题')
plt.xlabel('这是 x 轴标签')
plt.ylabel('这是 y 轴标签')

plt.plot(a, b)
plt.show()

04

【2x03】指定单个字体:fontproperties

fontproperties 参数可以加在要设置中文的地方

优点:不污染全局;缺点:中文太多了挨个设置比较繁琐。

应用举例:

import matplotlib.pyplot as plt

a = [-15, -10, -5, 20, 25, 30]
b = [-5, -4, -3, 6, 7, 8]

plt.title('这是中文标题', fontproperties='Microsoft JhengHei')   # 微软正黑
plt.xlabel('这是 x 轴标签', fontproperties='STLiti')             # 华文隶书
plt.ylabel('这是 y 轴标签', fontproperties='Microsoft YaHei')    # 微软雅黑

plt.plot(a, b)
plt.show()

05

【2x04】指定文字路径:FontProperties

matplotlibfont_manager 模块的 FontProperties 方法可以通过指定文字路径来使用本地文字,在 Windows 中,文字路径一般是 C:\Windows\Fonts\,文字名称可以通过其属性来获取,部分用户自己安装的字体可能包含多个类型,可打开字体合集后通过其属性来获取。

06

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

font = FontProperties(fname=r"C:\Windows\Fonts\STXINGKA.TTF", size=14)
a = [-15, -10, -5, 20, 25, 30]
b = [-5, -4, -3, 6, 7, 8]

plt.title('这是中文标题', fontproperties=font)
plt.xlabel('这是 x 轴标签', fontproperties=font)
plt.ylabel('这是 y 轴标签', fontproperties=font)

plt.plot(a, b)
plt.show()

07

【2x05】文字更多属性:rc

rc 参数支持文字的更多属性设置,如字体粗细、大小等,这种方法同样将影响全局。

官方参考:https://matplotlib.org/api/matplotlib_configuration_api.html?highlight=rc#matplotlib.rc

应用举例:

import matplotlib.pyplot as plt

font = {'family': 'SimHei',
        'weight': 'bold',
        'size': '10'}
plt.rc('font', **font)               # 设置字体的更多属性
plt.rc('axes', unicode_minus=False)  # 显示负号

a = [-15, -10, -5, 20, 25, 30]
b = [-5, -4, -3, 6, 7, 8]

plt.title('这是中文标题')
plt.xlabel('这是 x 轴标签')
plt.ylabel('这是 y 轴标签')

plt.plot(a, b)
plt.show()

08

【3x00】设置画布大小 / 分辨率 / 颜色

matplotlib.pyplot.figure() 可以设置画布的大小、图片分辨率、颜色等。

基本语法:matplotlib.pyplot.figure(figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, \*\*kwargs)

参数 描述
figsize (float, float) 的格式,代表宽度和高度,单位为英寸
默认为 rcParams["figure.figsize"] = [6.4, 4.8],即:640 x 480
dpi 图像分辨率,默认为 rcParams["figure.figsize"] = 100
facecolor 图像背景颜色,默认为 rcParams["figure.edgecolor"] = ‘white’
edgecolor 图像边缘颜色,默认为 rcParams[’figure.edgecolor’] = ‘white’
frameon 是否启用图框

应用举例:

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
x = range(2, 26, 2)
y = range(0, 12)

plt.figure(figsize=(6.5, 5), dpi=120, facecolor='#BBFFFF')
plt.plot(x, y)

plt.show()

09

【4x00】设置网格

matplotlib.pyplot.grid() 方法可以为图表设置网格显示。

基本语法:matplotlib.pyplot.grid([b=None, which='major', axis='both', \*\*kwargs])

参数 属性
b bool 值,可选项,是否显示网格,值为 NoneTrue 则显示,False 不显示
which 可选项,在主/次刻度显示网格线,major:主(大)刻度;minor:次(小)刻度;both:两者同时显示
axis 可选项,在横/竖轴显示网格线,x:x 轴;y:y 轴;both:两者同时显示
**kwargs 其他 Line2D 属性,常见 Line2D 属性见下表

Line2D 属性用法:grid(color='r', linestyle='-', linewidth=2),部分常见 Line2D 属性如下:

属性 描述
alpha 网格透明度,float 类型,取值范围:[0, 1],默认为 1.0,即不透明
antialiased / aa 是否使用抗锯齿渲染,默认为 True
color / c 网格颜色,支持英文颜色名称及其简写、十六进制颜色码等,更多颜色示例参见官网 Color Demo
linestyle / ls 网格线条样式:'-' or 'solid', '--' or 'dashed', '-.' or 'dashdot'
':' or 'dotted', 'none' or ' ' or ''
linewidth / lw 网格线条宽度,float 类型,默认 0.8

应用举例:

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

a = [-15, -10, -5, 20, 25, 30]
b = [-5, -4, -3, 6, 7, 8]

plt.title('这是中文标题')
plt.xlabel('这是 x 轴标签')
plt.ylabel('这是 y 轴标签')
plt.grid(axis='x', color='red', linestyle='-.', linewidth=2)
plt.plot(a, b)
plt.show()

10

原创文章 165 获赞 1134 访问量 55万+

猜你喜欢

转载自blog.csdn.net/qq_36759224/article/details/105828049