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中文网其他相关文章!