I am drawing a figure using the script below. When I plot the figure, the last point is connected to the first point. How can I remove this last line drawing ? Note that everything else seems ok.
I have attempted to do a for loop over the first to last point and the result is shown in the below image.
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()
How the plot in
matplotlib is drawn:
You send to plot a couple of points and it draws it from one to another. In your code you construct several curves but you doesn’t draw each of it separately, you send all of them to plot. So it draws the first curve, reaches its end and starts to draw the next. But! It doesn’t know that there is another curve, it thinks that it is the part of the one very-big-complicated-curve, so the plot draws that annoying line. If you want to draw them separately, you should move
pl.plot(xValues,yValues) into the first
for and empty
xValues, yValues after it. Here is the example of my code (
compressiblityFactor is replaced by a random func):
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()
Answered By – vurmux