且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用python的matplotlib向散点图添加线

更新时间:2023-11-30 16:40:46

这将绘制一条与散点图数据无关的对角线,即使您调整窗口大小,该对角线也保持以轴为根:

将 numpy 导入为 np导入matplotlib.pyplot作为plt将 matplotlib.lines 作为 mlines 导入导入 matplotlib.transforms 作为 mtransformsx,y = np.random.random((2,100))* 2无花果,ax = plt.subplots()ax.scatter(x,y,c ='黑色')line = mlines.Line2D([0, 1], [0, 1], color='红色')变换 = ax.transAxesline.set_transform(transform)ax.add_line(line)plt.show()

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 independent of the scatters content. A linear regression through the data, like in this post, is not what I am looking for. Also it should be dynamically and independent of the scatter input.

This should be the final plot:

EDIT:

Doing this got me the result:

# 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)
plt.plot([lineStart, lineEnd], [lineStart, lineEnd], 'k-', color = 'r')
plt.xlim(lineStart, lineEnd)
plt.ylim(lineStart, lineEnd)
plt.show()

Is there any better way ?

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.pyplot as plt
import matplotlib.lines as mlines
import matplotlib.transforms as 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()