Matplotlib:为什么情节总是封闭的形状?

时间:2016-05-24 20:08:36

标签: matplotlib plot axes

在Python 2.7中使用1.5.1。

我正在创建一个图形,向其添加一个轴对象,创建一个画布,并将其放入一个窗口。要绘制一个简单的图形,我在轴对象中设置X和Y限制,然后使用numpy arange of values和一个y值相同的数组调用plot成员函数,以及一些格式化选项。 / p>

我得到的是一个很好的数据图表,但是它被画成一条闭合曲线,这意味着从我的图表末尾开始有一条对角线回到开头。

为什么要这样做?当X值不是单调增加时(例如,绘制多边形),我可以看到偶然使用一个选项来实现这一点,但它似乎不是一个合理的默认值。我没有看到任何会影响这个或任何绘图参数的轴属性。有谁知道怎么让它不像这样包裹?

编辑:这是一些示例代码。它假定PyGTK为GUI环境:

import numpy
import gtk
import matplotlib
from matplotlib.figure import Figure
from matplotlib.backends.backend_gtk import FigureCanvasGTK as FigureCanvas

class junk:

    def __init__(self):

        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.connect('destroy', self.destroy)
        self.window.set_title('junk')
        self.window.resize(400, 400)

        self.figure = Figure()
        self.axes = self.figure.add_axes((0, 0, 1, 1))
        self.canvas = FigureCanvas(self.figure)
        self.canvas.show()

        self.window.add(self.canvas)

        self.axes.set_xlim(-10, 12)
        self.axes.set_ylim(-1, 122)
        x = numpy.arange(-9, 12)
        self.axes.plot(x, x * x, linestyle = 'solid')

        self.canvas.draw()

        self.window.show_all()

    def destroy(self, widget, data = None):

        gtk.main_quit()

    def main(self):

        gtk.main()

if __name__ == '__main__':

    app = junk()
    app.main()

这显示偏离中心的抛物线,结果如下:

enter image description here

现在将下限Y限制从-1更改为1,以便将底部剪切一点,结果如下所示:

enter image description here

这表明如果绘制图形需要多个路径,则每个路径都有虚假的环绕。

我在Windows上这样做,但是几年前我在运行Linux的Gumstix SOM上遇到了同样的问题。

2 个答案:

答案 0 :(得分:0)

我无法使用给定代码重现您的问题

import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
x = np.arange(-9, 12)
ax.plot(x, x*x)
plt.show()

simple plot

按照您传入的顺序在点之间绘制一条线。这是行为,因此您可以使用x的非严格函数来绘制事物。

答案 1 :(得分:0)

BrenBarn在原帖子的评论中确定了解决方案:使用GTKAgg后端而不是GTK后端。感谢。