Matplotlib 简明教程
Matplotlib - Font Properties
What are Font properties?
在 Matplotlib 库中,字体属性是决定绘图和图形中文本元素外观和样式的属性。这些属性包括各种方面,如字体系列、大小、粗细、样式和影响文本可视化呈现的其他设置。
Key Font Properties in Matplotlib
Font Family
字体系列指定用于文本元素的字体类型。常见的系列包括衬线体、无衬线体、等宽字体等。
-
serif − 带有装饰笔划的字体通常用于更传统或正式的外观。
-
sans-serif − 无装饰笔划的字体,以简洁现代的外观著称,通常用于可读性。
-
monospace − 每個字元都占据相同水平空间的字体,通常用于代码或表格数据。
-
Custom or Specific Fonts − 用户还可以使用安装在他们系统上的自定义字体或为特定字体提供字体路径。
Font Size
字体大小决定文本大小(以磅为单位 (pt)),从而影响可读性和可见性。字体大小以磅位(磅)指定,其中 1 磅大约为 1/72 英寸。Matplotlib 将磅作为字体大小的标准单位,从而在不同的设备和显示分辨率之间保持一致性。
Setting Font Properties in Matplotlib
以下是在 matplotlib 中设置字体属性的方法。
Global Configuration (using 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()
Individual Text Elements
通过此方法,我们可以为图中的特定文本元素设置字体属性。
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()
Using Font Properties for Customization
-
调整字体属性允许用户根据可视化或演示的要求定制文本的外观。
-
一致而恰当地使用字体属性可以确保在图和图形中以直观且连贯的方式显示文本信息。
最后,我们可以在 Matplotlib 库中使用的字体属性为用户提供了自定义文本外观的灵活性,确保可视化中的清晰度、可读性和视觉吸引力。这些属性可以精确控制文本元素在图中显示的方式,从而帮助有效地向查看者传达信息。
Multiple font sizes in one label
在此示例中,我们在 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()
Change the text color of font in the legend
在此示例中,我们将更改图例中字体的文本颜色。
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()
Change the default font color for all text
在此示例中,我们将更改图中所有文本的默认字体颜色。
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()
默认文本颜色:黑色
Change the font size of ticks of axes object
在此示例中,我们将更改图中所有文本的默认字体颜色。
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()
Increase the font size of the seaborn plot legend
在此示例中,我们增大了 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()