Matplotlib соединяет последнюю точку с первой при построении графика - PullRequest
2 голосов
/ 26 марта 2019

Я рисую фигуру, используя скрипт ниже. Когда я строю фигуру, последняя точка связана с первой точкой. Как я могу удалить этот последний рисунок линии? Обратите внимание, что все остальное кажется в порядке.

Я попытался выполнить цикл 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()

1 Ответ

2 голосов
/ 26 марта 2019

Как нарисован график в 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()
...