目录:
- 一、matplotlib画图风格
 - 二、matplotlib图像尺寸和保存分辨率
 - 三、matplotlib子图相关功能
 - 创建子图:
 - 绘制子图:
 - 设置子图属性:
 - 调整布局:
 - 示例代码:
 
- 四、matplotlib字体设置
 - 字体族和字体的区别
 - 字体选择和设置
 - 1. Matplotlib中的字体设置
 - 2. 使用中文字体
 - 3. 使用自定义字体
 - 4. 查看系统自带字体
 - 5. 其他字体属性
 
- 示例代码:
 
一、matplotlib画图风格
在 Matplotlib 中,可以通过设置不同的绘图风格(style)来自定义图形的外观。Matplotlib有一些预定义的风格,也允许您创建自定义风格。
以下是一些基本的设置绘图风格的方法:
-  
使用预定义的风格:
Matplotlib提供了一些预定义的绘图风格,如 ‘seaborn’, ‘ggplot’, ‘fivethirtyeight’ 等。您可以使用以下代码之一设置风格:import matplotlib.pyplot as plt # 使用预定义的风格 plt.style.use('seaborn') # 也可以使用其他风格,如 'ggplot', 'fivethirtyeight' 等 -  
自定义风格:
如果您希望创建自定义风格,可以使用plt.style.context,在此上下文中设置参数:import matplotlib.pyplot as plt # 创建自定义风格 with plt.style.context({ 'axes.edgecolor': 'gray', 'axes.labelcolor': 'black', 'xtick.color': 'black', 'ytick.color': 'black', 'xtick.direction': 'in', 'ytick.direction': 'in', 'grid.color': 'lightgray', 'grid.linestyle': '--', 'figure.facecolor': 'white', 'figure.edgecolor': 'white', }): # 在此上下文中绘制图形,图形将使用上述自定义风格 plt.plot(x, y) plt.xlabel('X-axis Label') plt.ylabel('Y-axis Label') plt.title('Custom Style Plot') # 图形在此上下文之外将使用默认风格 -  
查看可用的预定义风格:
如果想了解可用的预定义风格,可以使用以下代码:available_styles = plt.style.available print("Available styles:", available_styles)从中选择一个适合您的绘图的风格。
 
二、matplotlib图像尺寸和保存分辨率
-  
图像的默认设置:
'figure.figsize': 图像的默认尺寸,例如[6.4, 4.8]。'figure.dpi': 图像分辨率(每英寸点数),默认为100。
在 Matplotlib 中,您可以通过设置图形的大小和分辨率来调整图像的尺寸和清晰度。以下是一些方法:
 -  
设置图形大小:
您可以使用plt.figure(figsize=(width, height))来设置图形的大小。例如:import matplotlib.pyplot as plt # 设置图形大小为宽度10英寸,高度6英寸 plt.figure(figsize=(10, 6)) # 绘制图形 plt.plot(x, y) # 显示图形 plt.show() -  
设置分辨率:
您可以使用plt.savefig方法保存图形(savefig语句要在show之前,否则图像show之后图像销毁无法保存),并通过dpi参数设置分辨率。例如:import matplotlib.pyplot as plt # 绘制图形 plt.plot(x, y) # 保存图形并设置分辨率为300dpi plt.savefig('output_plot.png', dpi=300) # 显示图形(可选) plt.show()在上述例子中,图形将以300dpi的分辨率保存为PNG文件。您可以调整
dpi的值以获得所需的分辨率。 -  
综合使用大小和分辨率:
如果需要在显示和保存时分别设置大小和分辨率,可以结合使用plt.figure和plt.savefig:import matplotlib.pyplot as plt # 设置图形大小为宽度10英寸,高度6英寸 plt.figure(figsize=(10, 6)) # 绘制图形 plt.plot(x, y) # 保存图形并设置分辨率为300dpi plt.savefig('output_plot.png', dpi=300) # 显示图形 plt.show()在这个例子中,图形在显示时具有指定的大小,但保存时具有指定的分辨率。
 
根据您的具体需求,可以灵活调整图形的大小和分辨率。
三、matplotlib子图相关功能
Matplotlib中的子图(subplots)功能使您能够在同一图形上绘制多个子图。以下是子图相关功能的一些用法汇总:
创建子图:
-  
使用
plt.subplots创建多个子图:import matplotlib.pyplot as plt fig, axes = plt.subplots(nrows=2, ncols=2)在此示例中,
fig是整个图形对象,axes是一个包含所有子图的2x2数组。 -  
使用
plt.subplot创建单个子图:import matplotlib.pyplot as plt plt.subplot(2, 2, 1) # 创建一个2x2布局的图形,选择第一个子图 
绘制子图:
-  
在指定子图上绘制图形:
axes[0, 0].plot(x1, y1) axes[0, 1].scatter(x2, y2)在此示例中,
axes[0, 0]表示第一行第一列的子图。 
设置子图属性:
-  
设置子图标题:
axes[0, 0].set_title('Title for Subplot 1') -  
设置子图标签:
axes[1, 0].set_xlabel('X-axis Label') axes[1, 0].set_ylabel('Y-axis Label') -  
设置图形标题:
fig.suptitle('Overall Title for the Figure', fontsize=16) 
调整布局:
-  
调整子图之间的间距:
plt.subplots_adjust(wspace=0.5, hspace=0.3)这将调整子图之间的水平(
wspace)和垂直(hspace)间距。 
示例代码:
import matplotlib.pyplot as plt
import numpy as np
# 生成示例数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 创建2x2的子图布局
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 8))
# 在子图上绘制图形
axes[0, 0].plot(x, y1)
axes[0, 1].scatter(x, y2)
axes[1, 0].hist(y1, bins=20, color='green', alpha=0.7)
axes[1, 1].barh(x, y2, color='orange', alpha=0.7)
# 设置子图属性
axes[0, 0].set_title('Sine Curve')
axes[0, 1].set_title('Scatter Plot')
axes[1, 0].set_title('Histogram')
axes[1, 1].set_title('Horizontal Bar Chart')
# 设置图形标题
fig.suptitle('Multiple Subplots Example', fontsize=16)
# 调整布局
plt.subplots_adjust(wspace=0.5, hspace=0.3)
# 显示图形
plt.show()
 

这个示例代码创建了一个包含四个子图的图形,并展示了如何在子图上绘制不同类型的图形。根据您的需求,可以进一步调整子图的属性和布局。
四、matplotlib字体设置
字体族和字体的区别
在Matplotlib和其他文本处理库中,字体族(font family)和字体(font)是两个相关但不同的概念。
-  
字体族(Font Family):
- 字体族指的是一组具有相似设计风格的字体。这组字体通常由不同的字体样式组成,包括正常(regular)、粗体(bold)、斜体(italic)等。
 - 字体族用于指定文本的整体外观风格,而不仅仅是单一字体样式。常见的字体族包括"serif"(衬线字体,如Times New Roman)、“sans-serif”(无衬线字体,如Arial)、“monospace”(等宽字体,如Courier New)等。
 
 -  
字体(Font):
- 字体是字体族中的具体样式的实例,它定义了字符的外观、形状和大小。
 - 例如,“serif” 字体族可能包含具体的字体样式,如"Times New Roman"、"Georgia"等。每个具体的字体都属于特定的字体族,并具有独特的设计特征。
 
 
在Matplotlib中,通过指定字体族,您可以选择使用该族中的任何具体字体样式。字体族的选择通常受到个人偏好、图形的整体风格以及文本在不同设备上的可读性等因素的影响。
字体选择和设置
1. Matplotlib中的字体设置
Matplotlib提供了一些用于设置字体的方法,包括全局字体设置和特定元素的字体设置。
import matplotlib.pyplot as plt
# 全局字体设置
plt.rcParams['font.family'] = 'sans-serif'  # 指定字体家族
plt.rcParams['font.sans-serif'] = ['Arial']  # 指定具体字体
# 也可以直接在绘图时指定字体
plt.title('Title', fontdict={'fontname': 'Arial', 'fontsize': 16})
plt.xlabel('X Label', fontdict={'fontname': 'Arial', 'fontsize': 12})
plt.ylabel('Y Label', fontdict={'fontname': 'Arial', 'fontsize': 12})
# 显示图形
plt.show()
 
2. 使用中文字体
对于中文字体,可以使用支持中文的字体,如SimHei、Microsoft YaHei等。
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体或其他中文字体
 
3. 使用自定义字体
可以下载并使用第三方的中文字体文件,然后指定路径。
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['Path/To/Your/CustomChineseFont.ttf']  # 替换为自定义中文字体文件的路径
 
4. 查看系统自带字体
from matplotlib import font_manager
for f in font_manager.fontManager.ttflist:
    print(f.name)
 
以上方法应该能够解决大多数中文字体无法显示的问题。根据具体需求,选择适合的中文字体并进行相应的设置。
5. 其他字体属性
plt.rcParams是一个字典,用于设置Matplotlib的默认配置参数。以下是一些常见的plt.rcParams属性,用于定制Matplotlib的外观和行为:
-  
字体相关设置:
'font.family': 字体家族,默认为'sans-serif'。'font.sans-serif': 无衬线字体的具体名称,默认为'DejaVu Sans'。'font.serif': 有衬线字体的具体名称,默认为'DejaVu Serif'。'font.monospace': 等宽字体的具体名称,默认为'DejaVu Sans Mono'。'font.size': 字体大小,默认为10。
 -  
线条和标记的默认设置:
'lines.linewidth': 线条宽度,默认为1.5。'lines.linestyle': 线条风格,默认为'-'。'lines.marker': 数据点标记,默认为'None'。
 -  
刻度相关设置:
'xtick.labelsize': X轴刻度标签字体大小,默认为'medium'。'ytick.labelsize': Y轴刻度标签字体大小,默认为'medium'。'xtick.direction': X轴刻度方向,默认为'out'。'ytick.direction': Y轴刻度方向,默认为'out'。
 -  
文本相关设置:
'text.color': 默认文本颜色,默认为'black'。
 -  
坐标轴范围:
'axes.xmargin'和'axes.ymargin': 控制数据显示的空白边缘比例,默认为0.05。
 
等等。你可以通过plt.rcParams.keys()来查看所有的默认配置参数。
 
 定制这些参数可以让你在绘图时不必每次都手动设置相同的属性,提高了代码的可读性和重复使用性。
示例代码:
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'serif'
plt.rcParams['font.serif'] = 'Times New Roman'
plt.rcParams['font.size'] = 20
plt.rcParams['font.weight'] = "bold"
plt.rcParams['font.style'] = "italic"
plt.rcParams['text.color'] = "red"
plt.rcParams['xtick.color'] = "purple"
plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
plt.title('Sample chart')
plt.xlabel('X-axis', color="blue")
plt.ylabel('Y-axis')
# 或者在特定的文本上设置字体属性
plt.text(1, 29, 'Hello, Matplotlib!', fontsize=16, fontweight='bold', fontstyle = 'oblique', color='green')
plt.show()
 



















