Matplotlib 简明教程

Matplotlib - Formatting Axes

What is Formatting Axes?

Matplotlib 中轴的格式设置包括定制图片轴的各个方面,例如刻度、标签、刻度以及限制等。此定制增强了数据可视化的可读性和展示性。

Matplotlib 中轴的格式设置使我们能够根据数据的特征和显示要求定制可视化效果。尝试使用各个格式设置选项以创建清晰直观图片。

Use Cases

以下是格式设置轴的用例。

  1. Enhancing Readability − 调整字体大小、颜色和标签以获得更好的可视化效果。

  2. Data Emphasis − 设置限制和刻度以关注特定数据范围。

  3. Aesthetics − 使用标题、网格线和 spine 属性定制外观。

  4. Clarity and Context − 对轴进行标记并添加标题以了解图片的内容。

Axes Formatting Options

我们有不同的轴格式设置选项,让我们逐一详细了解。

Ticks and Tick Labels

在 Matplotlib 中,刻度是轴上指示特定数据点的小标记,而刻度标签是对应于该刻度的值。我们可以使用 Matplotlib 中的各种函数定制其外观。

若要修改刻度和刻度标签,我们可以使用 plt.xticks() 和 plt.yticks() 等方法设置其位置和标签。plt.xticks() 和 plt.yticks() 允许我们分别设置 x 轴和 y 轴上刻度的位置和标签。我们可以使用 plt.tick_params() 调整刻度的外观,以修改大小、颜色、方向等方面。

可以通过 plt.gca().xaxis 或 plt.gca().yaxis 以及 set_major_formatter() 等方法,对刻度标签进行格式设置,以控制它们的显示方式,例如科学记数法、小数位数、日期格式等。

此外,为了更精细的控制,我们可以使用 ax.get_xticks()、ax.get_yticks()、ax.get_xticklabels() 和 ax.get_yticklabels() 来访问特定的刻度和标签,然后分别修改它们。

Example

在这个示例中,我们使用 Matplotlib 库中讨论过的函数和方法,设置了带有刻度和刻度标签的绘图。

import matplotlib.pyplot as plt
import numpy as np

# Generating sample data
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Creating a plot
plt.figure(figsize=(8, 5))
plt.plot(x, y)

# Customizing ticks and tick labels
plt.xticks(np.arange(0, 11, 2))  # Set x-axis ticks at intervals of 2
plt.yticks(fontsize=10, color='red')  # Customize y-axis tick labels (font size and color)
plt.xlabel('X-axis', fontsize=12)
plt.ylabel('Y-axis', fontsize=12)
plt.title('Ticks and Tick Labels Formatting', fontsize=14)
plt.show()

执行上述代码,我们将得到以下输出 −

ticks ticklabels

Axis Limits and Scale

在创建可视化时,轴限制和比例是基本方面。它们控制沿着绘图或图表轴显示的数据范围和外观。

Axis Limits

轴限制定义在每个轴上显示的值跨度。通过设置限制,我们可以通过强调特定细节或趋势来关注特定的数据范围。例如,在一个散点图中,如果我们设置轴限制,那么它可以放大特定的感兴趣区域。

Scale

比例确定数据如何沿着轴分布和表示。常见的比例包括线性、对数和分类。线性比例表示沿轴均匀分布的数据,而对数比例强调数量级的变化,分类比例用于非数字数据或类别。

以下是与轴限制和比例相关的主要考虑因素和措施。

  1. Setting Limits − 定义每个轴的最小和最大值以控制显示的数据部分。

  2. Zooming In/Out − 调整轴限制以专注于特定的数据范围或缩小以显示整体背景。

  3. Scale Transformation − 更改比例类型可以改变数据的感知方式。例如,通过使用对数比例可以更好地显示指数增长或范围广泛的数据。

  4. Normalization − 根据需要对数据进行归一化,以便将不同的比例缩放到可比较的范围内,尤其是在同一图表上绘制多个数据集时。

  5. Limiting Outliers − 通过提供主要数据分布的更清晰视图,设置轴限制以排除异常值或异常值。

  6. Scale Customization − 一些可视化库允许自定义比例美学,例如不同比例的刻度位置和标记。

在 Python 库(如 Matplotlib 或 Seaborn)中提供了操作轴限制和比例的功能,允许用户详细控制数据在绘图中的显示方式。

Example

以下是一个使用 Python 的 Matplotlib 库的示例,演示了如何设置轴限制和更改比例。

import matplotlib.pyplot as plt
import numpy as np

# Generating data
x = np.linspace(0.1, 100, 500)
y = np.sin(x)

# Creating a figure and axes object
fig, axs = plt.subplots(1, 2, figsize=(12, 5))

# Plot with default linear scale
axs[0].plot(x, y)
axs[0].set_title('Linear Scale')

# Plot with logarithmic scale for the y-axis
axs[1].plot(x, y)
axs[1].set_yscale('log')  # Set logarithmic scale for the y-axis
axs[1].set_title('Logarithmic Scale (y-axis)')
plt.tight_layout()
plt.show()

执行上述代码,我们将得到以下输出 −

axislimits scale

Axis Labels and Titles

轴标签和标题是任何可视化中提供关于绘图上所表示数据的背景和信息的重要组成部分。它们帮助读者理解每个轴代表什么以及可视化的总体目的。

自定义轴标签和标题涉及指定文本、调整字体大小、设置字体粗细、更改颜色以及在绘图中适当放置它们以确保清晰度和可读性。

Axis Labels

轴标签描述沿着每个轴显示的数据的数量或性质。例如,在一个散点图中,y 轴上为身高,x 轴上为体重,标签可能是 "Height (cm)""Weight (kg)" 。它们明确了已绘图值的含义。

Titles

一个标题为整个绘图提供了一个总括性的描述或背景。它简要解释了可视化的内容、它可能说明了什么关系或模式,或者可以从中得出什么见解。

Example

以下是使用 Python 的 Matplotlib 库创建具有标记轴和标题的简单绘图的示例。

import matplotlib.pyplot as plt
import numpy as np

# Generating data
x = np.linspace(0, 10, 100)
y = np.cos(x)

# Creating the plot
plt.plot(x, y)

# Adding axis labels and title
plt.xlabel('X-axis Label')
plt.ylabel('Y-axis Label')
plt.title('Cosine Wave Plot')
plt.show()

执行上述代码,我们将得到以下输出 −

axis labels title

Grid Lines and Spines

网格线和轴线是有助于通过提供参考点和描绘绘图区域来理解和解释绘图的可视化组件。

自定义网格线和轴线允许通过提高其清晰度和视觉吸引力来更好地展示和强调绘图的某些方面。我们可以调整网格线和轴线的视觉外观、可见性和属性以满足可视化要求。

Grid Lines

这些是跨越绘图区域的水平线和垂直线,在沿着轴的刻度处相交。它们有助于在绘图中直观地估计数据点和关系。网格线可以存在于一个轴或两个轴上,它们可以在样式、颜色和可见度方面进行自定义。

Spines

轴线是形成图框边界的线。它们连接轴刻度并定义数据区域的边界。轴线可以针对绘图的每个侧面(例如顶部、底部、左侧、右侧)进行单独自定义,从而允许改变它们的视觉外观、厚度和位置。

在 Matplotlib 中,我们可以使用各种方法和属性来控制网格线和轴线。

Example

下面是使用 plt.grid() 和 plt.gca().spines 方法设置绘图的网格线和轴线的示例。

import matplotlib.pyplot as plt

# Generating data
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# Creating a plot
plt.plot(x, y)

# Displaying grid lines
plt.grid(True)  # Show grid lines

# Customizing spines
plt.gca().spines['top'].set_linestyle('--')  # Customize top spine style
plt.gca().spines['right'].set_visible(False)  # Hide right spine
plt.show()

执行上述代码,我们将得到以下输出 −

grids spines

轴脊线是连接轴刻度的分界绘图区域边界的线。轴对象具有位于顶部、底部、左侧和右侧的脊线。

可以通过指定颜色和宽度来绘制每个脊线。如果颜色设置为无,则任何边都不可见。

Example

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.spines['bottom'].set_color('blue')
ax.spines['left'].set_color('red')
ax.spines['left'].set_linewidth(2)
ax.spines['right'].set_color(None)
ax.spines['top'].set_color(None)
ax.plot([1,2,3,4,5])
plt.show()

执行上述代码,我们将得到以下输出 −

axis spines

Example

下面是使用 Python 的 Matplotlib 库对 x 轴和 y 轴进行标记的示例代码。

# importing matplotlib module
import matplotlib.pyplot as plt
import numpy as np

# x-axis & y-axis values
x = [1, 2, 3, 4, 5]
y = [10, 5, 15, 20, 25]

# create a figure and axes
fig, ax = plt.subplots()

# setting title to graph
ax.set_title('Tutorials Point')

# label x-axis and y-axis
ax.set_ylabel('y-AXIS')
ax.set_xlabel('x-AXIS')

# function to plot and show graph
ax.plot(x, y)
plt.show()

执行上述代码,我们将得到以下输出 −

xylabel

Example

在 Python matplotlib 中设置轴,限制 x 轴和 y 轴,在本例中为 (10,0) 和 (0,40)。轴的限制设置了グラフ中应涵盖的最高绘图。默认情况下,将指出 x 轴的最大值和给定点的 y 轴的最大值。

import matplotlib.pyplot as plt
import numpy as np

x = [1, 2, 3, 4, 5]
y = [10, 5, 15, 20, 25]

# create a figure and axes
fig, ax = plt.subplots()

ax.set_title('Tutorials Point')

ax.set_ylabel('y-AXIS')
ax.set_xlabel('x-AXIS')

# sets x, y-axis limits on the graph
ax.set_xlim(0, 10)
ax.set_ylim(0, 40)

# function to plot and show graph
ax.plot(x, y)
plt.show()

执行上述代码,我们将得到以下输出 −

xylimits