Dashed lines from points to axes in matplotlib

Viewed 11022

I have a set of points which I am plotting like this:

import matplotlib.pyplot as plt`

x = [1,2,3,4,5,6]
y = [1,4,9,16,25,36]

plt.scatter(x, y)

plt.show()

This gives output like this

enter image description here

What I want is to drop perpendiculars from the points to the axes, like in the figure below:

enter image description here

How can this be achieved?

2 Answers

Using hlines and vlines you can plot horizontal and vertical lines respectively.

import matplotlib.pyplot as plt

x = [1,2,3,4,5,6]
y = [1,4,9,16,25,36]

plt.vlines(x, 0, y, linestyle="dashed")
plt.hlines(y, 0, x, linestyle="dashed")
plt.scatter(x, y, zorder=2)

plt.xlim(0,None)
plt.ylim(0,None)
plt.show()

enter image description here

The plot you're looking for is what's known as a stemplot, which has an answer you can find here. It will give you the vertical line connections to the x-axis you desire; but if you want the horizontal lines connecting to the y-axis that may need some special treatment. You may be able to use a stem plot in the other axis rotated or something.

Related