如何使我的matplotlib图表超出坐标系?

32

我需要将一个matlab的图像制作脚本翻译成matplotlib/pylab的代码,并且我想要达到与下面matlab图像相同的效果:

由matlab生成的图像

正如您所看到的,绘图的z轴顺序似乎比网格的z轴顺序高,因此标记不会被坐标轴遮挡。但是,我无法找到以我的matplotlib图像做同样事情的方法:

使用matplotlib生成的图像

我想知道是否有可能在不增加y轴限制的情况下获得相同的显示效果。


我相信你有选择Matlab行为的充分理由,但在我看来,在轴范围之外绘制图形更像是一个错误而不是一个特性。 - joaquin
3个回答

59

要让标记显示在坐标轴外,可以关闭裁剪。这可以通过plot命令的关键字参数 clip_on=False来实现。

例如:

import matplotlib.pyplot as plt
plt.plot(range(5), range(5), 'ro', markersize=20, clip_on=False, zorder=100)
plt.show()

在此输入图片描述


+1 是的!我相当确定这就是 OP 所寻找的,但直到他对我的(低劣的)答案发表评论之前,这并不那么清楚 - 至少对我来说是这样。希望 OP 能接受这个答案。感谢您的发布。 - mechanical_meat
太好了!正是我所需要的。 - bretcj7

1

这是一个完整的示例,演示如何使用zorder关键字参数:http://matplotlib.sourceforge.net/examples/pylab_examples/zorder_demo.html
请注意,更高的 z-order 值意味着图形元素位于前景图层。

对于您的第二个问题,请查看Figure 类的实例中的 figsize 关键字参数:http://matplotlib.sourceforge.net/api/figure_api.html?highlight=figsize#matplotlib.figure.Figure

如果您遇到问题,请发表您的一些代码,我们将能够提供更详细的建议。祝你好运。


谢谢,我会查看你写下的两个链接。对于代码,我认为这是matplotlib的默认行为,即如果点本身(例如0.2;0)可见,则其周围的标记不完全可见并不是问题。这就是我想要改变的行为。 - nay
@nay:看起来tom10已经回答了你的问题。祝编程愉快! - mechanical_meat

0
如果您正在依次绘制这些线条,只需更改绘制调用的顺序即可解决z轴顺序问题。

谢谢你的回答,实际上我正在尝试的是使图形的 x 轴顺序高于网格本身的 z 轴顺序,这样标记(例如在 (0.2;0) 处)就像 matlab 图像一样变得完全可见。 - nay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接