Matplotlib - 脊柱



什么是脊柱?

在 Matplotlib 库中,脊柱指的是围绕数据区域的绘图边框或边缘。这些脊柱包含绘图的边界,定义了显示数据点的区域。默认情况下,绘图有四个脊柱,例如顶部、底部、左侧和右侧。

在 Matplotlib 中操作脊柱提供了设计绘图视觉方面的灵活性,允许对数据的呈现进行更量身定制和美观的呈现。

脊柱的关键特征

以下是脊柱的特征。

绘图的边界 - 脊柱构成绘图区域的边界,包围了数据可视化的区域。

可配置属性 - 每个脊柱(顶部、底部、左侧和右侧)都可以单独自定义,允许调整其外观、颜色、粗细和可见性。

可见性控制 - 可以使脊柱可见或隐藏以修改绘图的外观。

脊柱的用途

绘图自定义 - 脊柱允许自定义绘图的外观,可以调整绘图的边界和样式。

美观和可视化 - 自定义脊柱可以增强绘图的美观性,并吸引人们注意感兴趣的特定区域。

脊柱类型

现在让我们详细了解绘图中每个脊柱。

顶部脊柱

顶部脊柱指的是绘图区域顶部的水平线,对应于 y 轴的上边界。它是构成绘图周围边框的四个脊柱(顶部、底部、左侧和右侧)之一。

顶部脊柱的特征

边界线 - 顶部脊柱表示沿 y 轴的绘图区域的上边界。

默认可见性 - 默认情况下,顶部脊柱在 Matplotlib 绘图中可见。

自定义 - 与其他脊柱类似,顶部脊柱可以在其可见性、颜色、线型和线宽方面进行自定义。

示例

在此示例中,ax.spines['top'].set_visible(False) 通过移除沿 y 轴的绘图区域的上边界来隐藏顶部脊柱。

import matplotlib.pyplot as plt

# Creating a simple plot
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)

# Accessing and modifying the top spine
ax = plt.gca()  # Get the current axes
ax.spines['top'].set_visible(False)  # Hide the top spine
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Plot with Hidden Top Spine')
plt.show()
输出
Top Spine

修改顶部脊柱的用例

美观控制 - 自定义顶部脊柱的可见性、颜色或样式可以改善外观或匹配特定设计要求。

调整绘图边界 - 当绘图不需要上边界或创建特定视觉效果时,隐藏顶部脊柱可能很有用。

底部脊柱

在 Matplotlib 中,底部脊柱指的是构成绘图区域底部边框的水平线,对应于 x 轴。

底部脊柱的特征

与 x 轴关联 - 底部脊柱表示沿 x 轴的绘图边界,定义了绘图区域的下边界。

自定义 - 与其他脊柱类似,底部脊柱可以在其可见性、颜色、线型、粗细和位置方面进行自定义。

自定义底部脊柱的示例

在此示例中,使用ax.spines['bottom'].set_color('blue') 将底部脊柱的颜色更改为蓝色,ax.spines['bottom'].set_linewidth(2) 将底部脊柱的粗细设置为 2,并且ax.spines['bottom'].set_visible(True) 确保底部脊柱可见(如果它被隐藏了)。

import matplotlib.pyplot as plt

# Creating a simple plot
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)

# Accessing and customizing the bottom spine
ax = plt.gca()  # Get the current axes
ax.spines['bottom'].set_color('blue')  # Change the color of the bottom spine to blue
ax.spines['bottom'].set_linewidth(2)  # Set the thickness of the bottom spine to 2
ax.spines['bottom'].set_visible(True)  # Make the bottom spine visible (if previously hidden)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Plot with Customized Bottom Spine')
plt.show()
输出
Bottom Spine

底部脊柱自定义的用例

强调轴 - 通过自定义底部脊柱可以吸引人们注意 x 轴并增强绘图的美观性。

突出显示绘图边界 - 通过调整底部脊柱的外观可以帮助描绘绘图区域并提高其清晰度。

左侧脊柱

在 Matplotlib 中,左侧脊柱指的是构成绘图区域左侧边框的垂直线,对应于 y 轴。

左侧脊柱的特征

与 y 轴关联 - 左侧脊柱表示沿 y 轴的绘图边界,定义了绘图区域的左边界。

自定义 - 左侧脊柱的自定义类似于其他脊柱,可以通过颜色、可见性、边框宽度等进行自定义。

自定义左侧脊柱的示例

在此示例中,ax.spines['left'].set_color('green') 将左侧脊柱的颜色更改为绿色,ax.spines['left'].set_linewidth(2) 将左侧脊柱的粗细设置为 2,并且ax.spines['left'].set_visible(False) 确保左侧脊柱不可见(如果它可见)。

import matplotlib.pyplot as plt

# Creating a simple plot
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)

# Accessing and customizing the left spine
ax = plt.gca()  # Get the current axes
ax.spines['left'].set_color('green')  # Change the color of the left spine to green
ax.spines['left'].set_linewidth(2)  # Set the thickness of the left spine to 2
ax.spines['left'].set_visible(False)  # Make the left spine invisible (if previously visible)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Plot with Customized Left Spine')
plt.show()
输出
Left Spine

右侧脊柱

在 Matplotlib 中,右侧脊柱表示构成绘图区域右侧边框的垂直线,对应于右侧的 y 轴。

右侧脊柱的特征

与 y 轴关联 - 右侧脊柱定义了沿 y 轴的绘图右侧边界,表示绘图右侧的 y 轴。

自定义 - 与其他脊柱类似,右侧脊柱可以在其可见性、颜色、线型、粗细和位置方面进行自定义。

自定义右侧脊柱的示例

在此示例中,我们使用ax.spines['right'] 来自定义绘图的右侧脊柱。

import matplotlib.pyplot as plt

# Creating a simple plot
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)

# Accessing and customizing the right spine
ax = plt.gca()  # Get the current axes
ax.spines['right'].set_color('green')  # Change the color of the right spine to green
ax.spines['right'].set_linewidth(2)  # Set the thickness of the right spine to 2
ax.spines['right'].set_visible(True)  # Make the right spine visible (if previously hidden)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Plot with Customized Right Spine')
plt.show()
输出
Right Spine

自定义 Matplotlib 图形的脊柱

在此示例中,我们创建了六个图形以查看并自定义它们的脊柱。

示例

#First import the required libraries for the workbook.
import numpy as np
import matplotlib.pyplot as plt

#draw graph for sines
theta = np.linspace(0, 2*np.pi, 128)
y = np.sin(theta)
fig = plt.figure(figsize=(8,6))

#Define the axes with default spines
ax1 = fig.add_subplot(2, 3, 1)
ax1.plot(theta, np.sin(theta), 'b-*')
ax1.set_title('default spines')

#Define the function to plot the graph
def plot_graph(axs, title, lposition, bposition):
   ax = fig.add_subplot(axs)
   ax.plot(theta, y, 'b-*')
   ax.set_title(title)
   ax.spines['left'].set_position(lposition)
   ax.spines['right'].set_visible(False)
   ax.spines['bottom'].set_position(bposition)
   ax.spines['top'].set_visible(False)
   ax.xaxis.set_ticks_position('bottom')
   ax.yaxis.set_ticks_position('left')

#plot 3 graphs
plot_graph(232, 'centered spines', 'center', 'center')
plot_graph(233, 'zeroed spines', 'zero', 'zero')
plot_graph(234, 'spines at axes [0.25, 0.75]', ('axes', 0.25),('axes', 0.75))
plot_graph(235, 'spines at data [1.0, -1.0]', ('data', 1.0),('data', -1.0))
plot_graph(236, 'adjusted spines', ('outward', 10), ('outward', 10))

#fit the plot in the grid and display.
plt.tight_layout()
plt.show()
输出
Customize Spines
广告