【Python绘制散点图】

当然,我可以提供一个更简单的示例,这个示例将仅使用matplotlibnumpy来绘制散点图,并使用numpypolyfit函数(尽管它主要用于多项式拟合,但在这里我们用它来进行线性拟合)来添加趋势线。然后,我们将手动计算相关系数(使用numpycorrcoefscipypearsonr)和RMSE(但请注意,在这个简单的例子中,RMSE的计算只是为了演示,因为通常我们不会将输入变量x视为预测值)。

以下是简化的示例:

python 复制代码
import numpy as np
import matplotlib.pyplot as plt

# 生成模拟数据
np.random.seed(0)
x = np.linspace(0, 10, 100)  # 生成一个等差数列作为x值
y = 2 * x + 3 + np.random.randn(100) * 2  # 生成y值,与x线性相关但带有噪声

# 使用numpy的polyfit进行线性拟合(1表示一次多项式,即线性)
slope, intercept = np.polyfit(x, y, 1)

# 计算趋势线的y值
y_pred = slope * x + intercept

# 计算相关系数(使用numpy的corrcoef)
corr_matrix = np.corrcoef(x, y)
corr = corr_matrix[0, 1]

# 注意:在真实的应用场景中,你不会计算x和y之间的RMSE,因为x不是预测值。
# 但为了演示,我们仍然计算它。
rmse = np.sqrt(np.mean((y - x) ** 2))  # 这在实际中没有意义,只是为了演示

# 绘制散点图
plt.figure(figsize=(10, 6))
plt.scatter(x, y, color='blue', label='Data Points')

# 添加趋势线
plt.plot(x, y_pred, color='red', label='Trend Line')

# 添加相关系数和RMSE到图中(注意RMSE的标注只是为了演示)
plt.text(0.02, 0.95, f'Correlation Coefficient: {corr:.2f}', transform=plt.gca().transAxes, fontsize=12, color='green')
plt.text(0.02, 0.90, f'RMSE (for demonstration): {rmse:.2f}', transform=plt.gca().transAxes, fontsize=12, color='red')

# 添加趋势线方程到图中
plt.text(0.85, 0.05, f'Y = {slope:.2f}X + {intercept:.2f}', transform=plt.gca().transAxes, fontsize=12, color='black', ha='right')

# 设置图例、标题和坐标轴标签
plt.legend()
plt.title('Scatter Plot with Trend Line and Correlation')
plt.xlabel('X')
plt.ylabel('Y')

# 显示图形
plt.grid(True)
plt.show()

请注意以下几点:

  1. 在这个示例中,x是一个等差数列,而y是根据x的线性关系加上一些随机噪声生成的。
  2. 我们使用np.polyfit来拟合线性模型,并获取斜率(slope)和截距(intercept)。
  3. 相关系数是使用np.corrcoef计算的,该函数返回一个相关系数矩阵,其中corr_matrix[0, 1]xy之间的相关系数。
  4. RMSE的计算在这里只是为了演示目的,因为在实际应用中,你通常会计算预测值与实际值之间的RMSE。在这个例子中,我们将x视为预测值来计算RMSE,但这在统计学上是没有意义的。
  5. 我们使用plt.text在图形上添加文本,包括相关系数、RMSE(仅为演示)和趋势线方程。
相关推荐
爱笑的眼睛115 分钟前
文本分类的范式演进:从统计概率到语言模型提示工程
java·人工智能·python·ai
星川皆无恙10 分钟前
基于知识图谱+深度学习的大数据NLP医疗知识问答可视化系统(全网最详细讲解及源码/建议收藏)
大数据·人工智能·python·深度学习·自然语言处理·知识图谱
Tipriest_16 分钟前
旋转矩阵,齐次变换矩阵,欧拉角,四元数等相互转换的常用代码C++ Python
c++·python·矩阵
毕设源码-钟学长18 分钟前
【开题答辩全过程】以 基于PHP的家常菜谱教程网站为例,包含答辩的问题和答案
开发语言·php
周杰伦_Jay18 分钟前
【Go/Python/Java】基础语法+核心特性对比
java·python·golang
消失的旧时光-194322 分钟前
用 C 实现一个简化版 MessageQueue
c语言·开发语言
小鹿学程序23 分钟前
jdk配置完之后java -version还是默认的jdk版本如何更改
java·开发语言·python
至善迎风24 分钟前
Bun:下一代 JavaScript 运行时与工具链
开发语言·javascript·ecmascript·bun
程序员-King.27 分钟前
【Qt开源项目】— ModbusScope-day 5
开发语言·qt
Pyeako28 分钟前
Python数据可视化--matplotlib库
python·matplotlib·数据可视化·画图·pylab