Matplotlib - 字体属性



什么是字体属性?

在 Matplotlib 库中,字体属性是决定图表和图形中文本元素外观和样式的属性。这些属性包括各种方面,例如字体系列、大小、粗细、样式以及其他影响文本视觉呈现的设置。

Matplotlib 中的关键字体属性

字体系列

字体系列指定用于文本元素的字体类型。常见的字体系列包括 serif、sans-serif、monospace 等。

  • serif - 带装饰笔划的字体,通常用于更传统或正式的外观。
  • sans-serif - 不带装饰笔划的字体,以其简洁现代的外观而闻名,通常用于提高可读性。
  • monospace - 每個字符占用相同水平空间的字体,通常用于代码或表格数据。
  • 自定义或特定字体 - 用户也可以使用安装在其系统上的自定义字体,或提供特定字体的字体路径。

字体大小

字体大小决定文本的大小(以磅为单位),影响可读性和可见性。字体大小以磅 (pt) 为单位指定,其中 1 磅约为 1/72 英寸。Matplotlib 使用磅作为字体大小的标准单位,以便在不同的设备和显示分辨率下保持一致性。

字体粗细

字体粗细控制文本的厚度或粗细。选项范围从正常到粗体。它允许用户控制文本元素(如标签、标题、注释和其他文本组件)的视觉重点。

字体粗细选项

  • normal - 指定正常字体粗细。
  • bold - 指定粗体字体粗细。
  • 整数值 - 一些字体支持 100 到 900 的数值范围来指定粗细级别。

字体样式

字体样式指定文本的样式,例如正常、斜体或倾斜。它允许用户控制文本元素(如标签、标题、注释和其他文本组件)的倾斜度或样式。

字体样式选项

  • normal - 指定正常字体样式(无倾斜或斜体)。
  • italic - 指定斜体字体样式,使字符倾斜。
  • oblique - 与斜体类似,但在某些字体中外观可能略有不同。

在 Matplotlib 中设置字体属性

以下是设置 matplotlib 中字体属性的方法。

全局配置 (使用 plt.rcParams)

这用于为绘图或图形中的所有文本元素配置默认字体属性。

示例

import matplotlib.pyplot as plt
# Set global font properties
x = [2,3,4,6]
y = [9,2,4,7]
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.size'] = 8
plt.rcParams['font.weight'] = 'normal'
plt.rcParams['font.style'] = 'italic'
plt.plot(x,y)
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.title("Setting fonts globally")
plt.show()
输出
Setting Fonts Globally

单个文本元素

通过这种方法,我们可以为绘图中的特定文本元素设置字体属性。

示例

import matplotlib.pyplot as plt
# Set Individual font properties
x = [2,3,4,6]
y = [9,2,4,7]
plt.plot(x,y)
plt.xlabel('X-axis Label', fontsize=14, fontweight='bold', fontstyle='italic')
plt.ylabel('Y-axis Label', fontsize=14, fontweight='bold', fontstyle='normal')
plt.title("Setting fonts Individually")
plt.show()
输出
Setting Fonts

字体属性的重要性

以下是字体属性的重要性。

可读性

正确的字体选择和大小可以增强文本元素的可读性。

美观

字体样式和系列有助于提高绘图的视觉吸引力。

沟通

字体属性有助于在可视化中传达重点或上下文。

使用字体属性进行自定义

  • 调整字体属性允许用户调整文本外观以匹配可视化或演示文稿的要求。
  • 一致且适当的字体属性使用确保在绘图和图形中以视觉上连贯且信息丰富的方式显示文本信息。

最后,我们可以说 Matplotlib 库中的字体属性为用户提供了自定义文本外观的灵活性,确保可视化中的清晰度、可读性和视觉吸引力。这些属性能够精确控制绘图中文本元素的显示方式,从而有效地将信息传达给观众。

一个标签中的多个字体大小

在这个示例中,我们在 Python 中使用 title() 方法的 fontsize 参数在一个标签中使用多个字体大小。

示例

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.linspace(-5, 5, 100)
y = np.cos(x)
plt.plot(x, y)
fontsize = 20
plt.title("$bf{y=cos(x)}$", fontsize=fontsize)
plt.axis('off')
plt.show()
输出
multiple_font

更改图例中字体的文本颜色

在这个示例中,我们将更改图例中字体的文本颜色。

示例

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.linspace(-2, 2, 100)
y = np.exp(x)
plt.plot(x, y, label="y=exp(x)", c='red')
leg = plt.legend(loc='upper left')
for text in leg.get_texts():
   text.set_color("green")
plt.show()
输出
legend_font_size

更改所有文本的默认字体颜色

在这个示例中,我们将更改绘图中所有文本的默认字体颜色。

示例

import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
print("Default text color is: ", plt.rcParams['text.color'])
plt.rcParams.update({'text.color': "red",
   'axes.labelcolor': "green"})
plt.title("Title")
plt.xlabel("X-axis")
plt.show()
输出

默认文本颜色为:黑色

default_color

更改坐标轴对象的刻度字体大小

在这个示例中,我们将更改绘图中所有文本的默认字体颜色。

示例

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.linspace(-2, 2, 10)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y, c='red', lw=5)
ax.set_xticks(x)
for tick in ax.xaxis.get_major_ticks():
   tick.label.set_fontsize(14)
   tick.label.set_rotation('45')
plt.tight_layout()
plt.show()
输出
axes_object

增加Seaborn绘图图例的字体大小

在这个示例中,我们增加了Seaborn绘图中图例的字体大小,我们可以使用fontsize变量,并将其用于legend()方法的参数中。

示例

import pandas
import matplotlib.pylab as plt
import seaborn as sns
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
df = pandas.DataFrame(dict(
   number=[2, 5, 1, 6, 3],
   count=[56, 21, 34, 36, 12],
   select=[29, 13, 17, 21, 8]
))
bar_plot1 = sns.barplot(x='number', y='count', data=df, label="count", color="red")
bar_plot2 = sns.barplot(x='number', y='select', data=df, label="select", color="green")
fontsize = 20
plt.legend(loc="upper right", frameon=True, fontsize=fontsize)
plt.show()
输出
seaborn_legend
广告