Matplotlib - 坐标轴格式化



什么是坐标轴格式化?

在 Matplotlib 中格式化坐标轴涉及自定义绘图坐标轴的各个方面,例如刻度、标签、比例、限制等。这种自定义增强了数据可视化的可读性和演示效果。

在 Matplotlib 中格式化坐标轴使我们能够根据数据的特征和演示要求调整可视化效果。尝试各种格式化选项以创建清晰且信息丰富的绘图。

使用案例

以下是坐标轴格式化的使用案例。

  • 增强可读性 - 调整字体大小、颜色和标签以获得更好的可视化效果。

  • 数据重点 - 设置限制和比例以关注特定数据范围。

  • 美观 - 使用标题、网格线和脊柱属性自定义外观。

  • 清晰度和上下文 - 对坐标轴进行标记并添加标题以了解绘图的内容。

坐标轴格式化选项

我们有不同的坐标轴格式化选项,让我们详细了解每一个。

刻度和刻度标签

在 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() 访问特定的刻度和标签,然后单独修改它们。

示例

在本例中,我们使用 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

坐标轴限制和比例

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

坐标轴限制

坐标轴限制定义每个坐标轴上显示的值的跨度。通过设置限制,我们可以专注于特定范围的数据,从而强调特定的细节或趋势。例如,在散点图中,如果我们设置坐标轴限制,则可以放大某个感兴趣的区域。

比例

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

以下是与坐标轴限制和比例相关的关键注意事项和操作。

  • 设置限制 - 定义每个坐标轴的最小值和最大值,以控制显示数据的部分。

  • 放大/缩小 - 调整坐标轴限制以关注特定数据范围或缩小以显示整体上下文。

  • 比例转换 - 更改比例类型可以改变数据感知方式。例如,使用对数比例可以更好地可视化指数增长或范围广泛的数据。

  • 归一化 - 如果需要,对数据进行归一化以将不同的比例带入可比较的范围内,尤其是在同一张图上绘制多个数据集时。

  • 限制异常值 - 设置坐标轴限制以排除异常值或异常值,从而更清晰地查看主要数据分布。
  • 比例自定义 - 一些可视化库允许自定义比例美学,例如不同比例的刻度放置和标记。

在 Python 库(如 Matplotlib 或 Seaborn)中,提供用于操作坐标轴限制和比例的功能,允许用户详细控制如何在绘图中呈现数据。

示例

以下是用 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

坐标轴标签和标题

坐标轴标签和标题是任何可视化效果的关键组成部分,用于提供关于绘图上表示数据的上下文和信息。它们帮助读者了解每个坐标轴代表什么以及可视化的总体目的。

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

坐标轴标签

坐标轴标签描述沿每个坐标轴显示的数据的数量或性质。例如,在散点图中,如果 y 轴是高度,x 轴是体重,则标签可能是“高度(厘米)”“体重(公斤)”。它们清楚地说明了所绘制的值的含义。

标题

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

示例

以下是使用 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

网格线和脊柱

网格线和脊柱是视觉组件,通过提供参考点和描绘绘图区域来帮助理解和解释绘图。

自定义网格线和脊柱允许通过增强其清晰度和视觉吸引力来更好地呈现和强调绘图的某些方面。我们可以调整网格线和脊柱的外观、可见性和属性以适应可视化的需求。

网格线

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

脊柱

脊柱是构成绘图框边界的线。它们连接坐标轴刻度标记并定义数据区域的边界。可以单独自定义绘图每一侧的脊柱,例如顶部、底部、左侧、右侧,这允许更改它们的外观、粗细和位置。

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

示例

以下是使用 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

坐标轴脊柱是连接坐标轴刻度标记的线,描绘绘图区域的边界。axes 对象在顶部、底部、左侧和右侧都有脊柱。

可以通过指定颜色和宽度来格式化每个脊柱。如果将任何边的颜色设置为 none,则可以使其不可见。

示例

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

示例

这是一个使用 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()

输出

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

XY labeling

示例

在 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()

输出

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

XY limits
广告