1

I have two lists where each element is a tuple that should be interpreted as

x = [(x1_begin, x1_end), (x2_begin, x2_end), ... , (xn_begin, xn_end)]
y = [(y1_begin, y1_end), (y2_begin, y2_end), ... , (yn_begin, yn_end)] 

In one figure, I would like to plot all these points and draw lines only between (yi_begin, yi_end) vs (xi_begin, xi_end) for all i.

The following code manages to plot all the points. But I'm not sure how to draw the lines properly between the points. Any help is much appreciated.

import matplotlib.pyplot as plt

x = [(1, 27), (32, 55), (56, 80), (84, 103)]
y = [(5, 7), (3, 6), (4, 9), (6, 11)]

fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(x, y, color='black')
plt.show()
6
  • I am a bit confused. Is your x and y corresponding to coordinates on the x, y axis? Commented Aug 5, 2018 at 8:59
  • @Spinor8 yes, so the range of the x-axis should be 1 to 103, and of the y-axis 3 to 11. I hope that clarifies your question? Commented Aug 5, 2018 at 9:02
  • So your data is essentially: list_1 = [(line1_start_x, line1_end_x) ,.... ] and list_2 = [(line1_start_y, line1_end_y) ....], right? Commented Aug 5, 2018 at 9:06
  • (yi_begin, yi_end) vs (xi_begin, xi_end) means a line between (xi_begin,yi_begin) to (xi_end,yi_end) ? Commented Aug 5, 2018 at 9:08
  • 1
    Also, seems like a duplicate of this question. Please use search before posting. Commented Aug 5, 2018 at 9:20

2 Answers 2

2

Iterate over your tuples:

import matplotlib.pyplot as plt

x = [(1, 27), (32, 55), (56, 80), (84, 103)]
y = [(5, 7), (3, 6), (4, 9), (6, 11)]

fig = plt.figure()
ax = fig.add_subplot(111)
for xt, yt in zip(x,y):
    ax.plot(xt, yt, color='black')
plt.show()

enter image description here

Sign up to request clarification or add additional context in comments.

Comments

1

If indeed you are asking for one line per tuple, here's the code.

fig = plt.figure()
ax = fig.add_subplot(111)
assert len(x) == len(y)
for i in range(len(x)):
    plt.plot(x[i], y[i])
plt.show()

giving you

enter image description here

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.