在 matplotlib 的 x 轴中中断//[重复]

2025-02-11 09:50:00
admin
原创
74
摘要:问题描述:描述我想要实现的目标的最好方式是使用我自己的图像:现在我在光谱图中有很多死区,特别是在 5200 和 6300 之间。我的问题很简单,我该如何添加一个看起来类似于这样的小 // 中断(图片取自网络):我正在为我的情节使用这个设置:nullfmt = pyplot.NullFormatter() f...

问题描述:

描述我想要实现的目标的最好方式是使用我自己的图像:

在此处输入图片描述

现在我在光谱图中有很多死区,特别是在 5200 和 6300 之间。我的问题很简单,我该如何添加一个看起来类似于这样的小 // 中断(图片取自网络):

在此处输入图片描述

我正在为我的情节使用这个设置:

nullfmt = pyplot.NullFormatter()

fig = pyplot.figure(figsize=(16,6))

gridspec_layout1= gridspec.GridSpec(2,1)
gridspec_layout1.update(left=0.05, right=0.97, hspace=0, wspace=0.018)
pyplot_top      = fig.add_subplot(gridspec_layout1[0])
pyplot_bottom   = fig.add_subplot(gridspec_layout1[1])

pyplot_top.xaxis.set_major_formatter(nullfmt)

我很确定这可以通过 gridpsec 实现,但如果能提供一个详细介绍如何实现这一点的高级教程,我将不胜感激。

如果这个问题之前已经在 stackoverflow 上处理过,那么我也很抱歉,但我已经广泛寻找正确的程序gridSpec,但仍然一无所获。

我已经做到了这一点,基本上就是这样:

在此处输入图片描述

但是,我的断线并不像我想要的那样陡峭......我该如何改变它们?(我使用了下面的示例答案)


解决方案 1:

您可以直接调整matplotlib 示例以在 x 轴上进行中断:

"""
Broken axis example, where the x-axis will have a portion cut out.
"""
import matplotlib.pylab as plt
import numpy as np


x = np.linspace(0,10,100)
x[75:] = np.linspace(40,42.5,25)

y = np.sin(x)

f, (ax, ax2) = plt.subplots(1, 2, sharey=True, facecolor='w')

# plot the same data on both axes
ax.plot(x, y)
ax2.plot(x, y)

ax.set_xlim(0, 7.5)
ax2.set_xlim(40, 42.5)

# hide the spines between ax and ax2
ax.spines['right'].set_visible(False)
ax2.spines['left'].set_visible(False)
ax.yaxis.tick_left()
ax.tick_params(labelright='off')
ax2.yaxis.tick_right()

# This looks pretty good, and was fairly painless, but you can get that
# cut-out diagonal lines look with just a bit more work. The important
# thing to know here is that in axes coordinates, which are always
# between 0-1, spine endpoints are at these locations (0, 0), (0, 1),
# (1, 0), and (1, 1).  Thus, we just need to put the diagonals in the
# appropriate corners of each of our axes, and so long as we use the
# right transform and disable clipping.

d = .015  # how big to make the diagonal lines in axes coordinates
# arguments to pass plot, just so we don't keep repeating them
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)  # switch to the bottom axes
ax2.plot((-d, +d), (1-d, 1+d), **kwargs)
ax2.plot((-d, +d), (-d, +d), **kwargs)

# What's cool about this is that now if we vary the distance between
# ax and ax2 via f.subplots_adjust(hspace=...) or plt.subplot_tool(),
# the diagonal lines will move accordingly, and stay right at the tips
# of the spines they are 'breaking'

plt.show()

matplotlib 损坏的 x 轴示例

为了您的目的,只需绘制两次数据(每个轴一次,ax然后适当ax2设置您的xlims )。“断线”应该移动以匹配新的断线,因为它们是在相对轴坐标而不是数据坐标中绘制的。

断线只是在两个点之间绘制的未裁剪的绘图线。例如,在第一个轴上绘制点和ax.plot((1-d, 1+d), (-d, +d), **kwargs)之间的断线:这是右下角的断线。如果要更改梯度,请适当更改这些值。例如,要使这个更陡峭,请尝试(1-d, -d)`(1+d, +d)`ax.plot((1-d/2, 1+d/2), (-d, +d), **kwargs)

解决方案 2:

xnx 提供的解决方案是一个好的开始,但还有一个问题,即两个图之间的 x 轴比例不同。如果左图的范围和右图的范围相同,则这不是问题,但如果它们不相等,子图仍将使两个图的宽度相等,因此两个图之间的 x 轴比例将不同(xnx 的示例就是这种情况)。我制作了一个包brokenaxes来处理这个问题。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2482  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1533  
  PLM(产品生命周期管理)项目对于企业优化产品研发流程、提升产品质量以及增强市场竞争力具有至关重要的意义。然而,在项目推进过程中,范围蔓延是一个常见且棘手的问题,它可能导致项目进度延迟、成本超支以及质量下降等一系列不良后果。因此,有效避免PLM项目范围蔓延成为项目成功的关键因素之一。以下将详细阐述三大管控策略,助力企业...
plm系统   0  
  PLM(产品生命周期管理)项目管理在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和产品复杂度的提升,PLM项目面临着诸多风险。准确量化风险优先级并采取有效措施应对,是确保项目成功的关键。五维评估矩阵作为一种有效的风险评估工具,能帮助项目管理者全面、系统地评估风险,为决策提供有力支持。五维评估矩阵概述...
免费plm软件   0  
  引言PLM(产品生命周期管理)开发流程对于企业产品的全生命周期管控至关重要。它涵盖了从产品概念设计到退役的各个阶段,直接影响着产品质量、开发周期以及企业的市场竞争力。在当今快速发展的科技环境下,客户对产品质量的要求日益提高,市场竞争也愈发激烈,这就使得优化PLM开发流程成为企业的必然选择。缺陷管理工具和六西格玛方法作为...
plm产品全生命周期管理   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用