Matplotlib 在绘图时将最后一个点连接到第一个点

Matplotlib is connecting the last to the first point when plotting

我正在使用下面的脚本绘制图形。当我绘制图形时,最后一个点连接到第一个点。我怎样才能删除最后的线条图?请注意,其他一切似乎都正常。

我试图在第一个点到最后一个点上做一个for循环,结果如下图所示。

fig = pl.figure()
ax = fig.add_subplot(111)
xValues = []
yValues =[]
for tr in range(105,300,5):
 tr = tr/100.
 for pr in range(0,1500,1):
   pr = pr / 100. 
   result = compressiblityFactor(pr,tr,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11)
   ##result = compressiblityFactor(p,t,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,specificGravity)

   xValues.append((pr))
   yValues.append(result)

pl.plot(xValues,yValues)

pl.show()

matplotlib中的情节是如何绘制的:

您发送到 plot 几个点,它会从一个点绘制到另一个点。在您的代码中,您构建了几条曲线,但您没有单独绘制每条曲线,而是将它们全部发送到绘图。所以它绘制第一条曲线,到达终点并开始绘制下一条曲线。 但是! 它不知道还有另一条曲线,它认为它是一条非常复杂的曲线的一部分,所以情节画了那条烦人的线。如果你想分开绘制,你应该把pl.plot(xValues,yValues)移到第一个for,然后空xValues, yValues。这是我的代码示例(compressiblityFactor 被随机函数替换):

import matplotlib.pyplot as pl
import math

fig = pl.figure()
ax = fig.add_subplot(111)

for tr in range(105,300,5):
    xValues = []
    yValues = []
    tr = tr/100.
    for pr in range(0,1500,100):
        pr = pr / 100. 
        result = pr*pr*math.sin(tr*40)
        xValues.append(pr)
        yValues.append(result)
    pl.plot(xValues,yValues)

pl.show()