Skip to content Skip to sidebar Skip to footer

Adding Line To Scatter Plot Using Python's Matplotlib

I am using python's matplotlib and want to create a matplotlib.scatter() with additional line. The line should proceed from the lower left corner to the upper right corner independ

Solution 1:

This draws a diagonal line which is independent of the scatter plot data and which stays rooted to the axes even if you resize the window:

import numpy as np
import matplotlib.pyplotas plt
import matplotlib.linesas mlines
import matplotlib.transformsas mtransforms

x, y = np.random.random((2, 100))*2
fig, ax = plt.subplots()
ax.scatter(x, y, c='black')
line = mlines.Line2D([0, 1], [0, 1], color='red')
transform = ax.transAxes
line.set_transform(transform)
ax.add_line(line)
plt.show()

enter image description here

Solution 2:

Besides unutbu's answer one other option is to get the limits of the axis after you ploted the data and to use them to add the line. After this you will still need to change back the axis limits as they would change with the addition of the line:

# Scatter Plot
x = data_calc_hourly.temp
y =  data_obs_hourly.temp

lineStart = data_calc_hourly.temp.min() 
lineEnd = data_calc_hourly.temp.max()  

plt.figure()
plt.scatter(x, y, color = 'k', alpha=0.5)
y_lim = plt.ylim()
x_lim = plt.xlim()
plt.plot(x_lim, y_lim, 'k-', color = 'r')
plt.ylim(y_lim)
plt.xlim(x_lim)
plt.show()

Solution 3:

I have tried updating the min and max limits for the cases where X and Y axis have different max and min data.

x = data_calc_hourly.temp
y =  data_obs_hourly.temp

calc_min = data_calc_hourly.temp.min()
calc_max = data_calc_hourly.temp.max()

obs_min = data_obs_hourly.temp.min()
obs_max = data_obs_hourly.temp.max()

lineStart = min(calc_min,obs_min)
lineEnd = max(calc_max,obs_max)

plt.figure()
plt.scatter(x, y, color = 'k', alpha=0.5)
plt.plot([lineStart, lineEnd], [lineStart, lineEnd], color = 'r')
plt.xlim(lineStart, lineEnd)
plt.ylim(lineStart, lineEnd)
plt.show()

Post a Comment for "Adding Line To Scatter Plot Using Python's Matplotlib"