首页 > 后端开发 > Python教程 > 如何在 Matplotlib 中使用子图创建不连续的 X 轴?

如何在 Matplotlib 中使用子图创建不连续的 X 轴?

Barbara Streisand
发布: 2024-12-18 01:45:10
原创
823 人浏览过

How to Create Discontinuous X-Axes in Matplotlib Using Subplots?

Matplotlib 中的不连续轴

在 Matplotlib 中创建不连续的 x 轴可以增强数据中重大间隙的可见性。虽然自定义变换是一种有效的方法,但利用子图可以轻松实现所需的不连续性。

一种方法涉及使用两个子图,共享 y 轴对齐。放大数据的不同部分并调整 x 轴限制以关注特定部分。通过隐藏子图之间的脊柱并调整刻度方向,您可以创建不连续性。

为了在视觉上更加引人注目的断轴效果,可以添加对角线。在轴坐标中指定所需的对角线大小。禁用剪切并为每条对角线设置适当的变换,以确保它落在轴的正确角内。通过利用此方法,对角线将随着子图之间的空间变化而动态调整。

以下是包含这些技术的示例代码:

import matplotlib.pyplot as plt
import numpy as np

# Generate sample data
x = np.r_[0:1:0.1, 9:10:0.1]
y = np.sin(x)

# Create subplots and set x-axis limits
fig, (ax, ax2) = plt.subplots(1, 2, sharey=True)
ax.set_xlim(0, 1)
ax2.set_xlim(9, 10)

# Plot data and hide spines
ax.plot(x, y, 'bo')
ax2.plot(x, y, 'bo')
ax.spines['right'].set_visible(False)
ax2.spines['left'].set_visible(False)
ax.yaxis.tick_left()
ax.tick_params(labeltop='off')
ax2.yaxis.tick_right()

# Adjust spacing and add diagonal lines
plt.subplots_adjust(wspace=0.15)

# Define diagonal line parameters
d = .015
kwargs = dict(transform=ax.transAxes, color='k', clip_on=False)
ax.plot((1 - d, 1 + d), (-d, +d), **kwargs)
ax.plot((1 - d, 1 + d), (1 - d, 1 + d), **kwargs)
kwargs.update(transform=ax2.transAxes)
ax2.plot((-d, d), (-d, +d), **kwargs)
ax2.plot((-d, d), (1 - d, 1 + d), **kwargs)

plt.show()
登录后复制

以上是如何在 Matplotlib 中使用子图创建不连续的 X 轴?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板