【问题标题】:How to set an axis interval range using Matplotlib or other libraries in python [duplicate]如何在 python 中使用 Matplotlib 或其他库设置轴间隔范围 [重复]
【发布时间】:2013-09-04 06:55:36
【问题描述】:

我想在 matplotlib 生成的图中仅显示 x 轴上的相关部分 - 使用 pyplot 包装库。

问题:如何通过传递区间范围的元组来强制绘图在某些轴位置截止,这些元组定义了要绘制的 x 轴的区间。理想情况下,应使用叠加在 x 轴上的垂直双波符号来表示截止。

使用xlim and axis 是没有用的,因为它只允许设置 x 轴的开始和结束,但没有中间的间隔:

具体来说,对于上图,60 to 90 之间的 x 轴区域不应显示,应添加截止/不连续图标记。

import matplotlib.pyplot as pyplot
x1, x2 = 0, 50
y1, y2 = 0, 100
pyplot.xlim([x1, x2])
#alternatively
pyplot.axis([x1, x2, y1, y2])

使用 matplotlib 不是必需的。

更新/总结:

  • Viktor 指向 this source,使用 subplots-splitting 和两个图来模拟 matplotlib/pyplot 中的折线图。

【问题讨论】:

  • @SaulloCastro 感谢您的指点。那么这个问题在matplotlib中似乎没有解决呢?然而,这个问题包含指向其他漂亮绘图库的指针。我忘了更新主题标题...
  • 我在这里找到了关于其他绘图库的点点滴滴……What is the best plotting library for Python?

标签: python matplotlib plot range


【解决方案1】:

您在 matplotlib 示例中有一个断轴示例:Broken Axis

在您的示例中,子图将仅共享 y 轴而不是 x 轴,并且将在 x 轴上设置限制。

条形图示例:

fig, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
x = [1, 2, 3, 4, 5, 51, 52, 53, 54, 55]
y = [4, 3, 4, 5, 4, 3, 4, 5, 6, 4]
ax1.bar(x, y)
ax2.bar(x, y)

# Fix the axis
ax1.spines['right'].set_visible(False)
ax1.yaxis.tick_left()
ax2.spines['left'].set_visible(False)
ax2.yaxis.tick_right()
ax2.tick_params(labelleft='off')
ax1.set_xlim(1, 6)
ax2.set_xlim(51, 56)

【讨论】:

【解决方案2】:

如果您使用matplotlib.pyplot.xticks,您可以控制所有标记的位置和值。

This answer 应该会告诉你怎么做。

【讨论】:

  • 谢谢,但具体来说,我不希望显示 60-90 之间的 x 轴区域。蜱虫并不是最重要的......
  • @LoSauer 如果您设置刻度以使 60-90 不存在并省略相应的 y 轴数据(在您的情况下为 0),这将是结果。请查阅 Saullo 发送给您的链接。看起来这个问题已经在那里得到了回答。
  • 链接指向使用带有两个绘图的 subplots 表的解决方法。也许 Python 中有一个比 pyplot 更抽象的 matplotlib 包装库?
猜你喜欢
  • 2011-02-20
  • 1970-01-01
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
  • 2018-08-15
  • 2018-05-06
  • 2017-03-01
相关资源
最近更新 更多