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

问题描述 投票:2回答:1

我正在使用下面的脚本绘制一个数字。当我绘制图形时,最后一个点连接到第一个点。如何删除最后一个线条图?请注意,其他一切似乎都可以。

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

enter image description here

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()
python matplotlib plot drawing figure
1个回答
2
投票

如何绘制matplotlib的情节:

你发送以绘制几个点并将它从一个点绘制到另一个点。在您的代码中,您构建了几条曲线,但是您没有单独绘制每条曲线,而是将它们全部发送到绘图中。因此它绘制第一条曲线,到达终点并开始绘制下一条曲线。但!它不知道还有另一条曲线,它认为它是一条非常大的复杂曲线的一部分,所以情节绘制了那条恼人的线条。如果你想单独绘制它们,你应该将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()
© www.soinside.com 2019 - 2024. All rights reserved.