6.2 关系可视化-散点图

该文展示了如何使用Python的matplotlib库绘制犯罪率数据的散点图,并通过statsmodels库进行局部加权回归。第一部分绘制了谋杀率与入室盗窃率的基础散点图,第二部分增加了局部加权回归线,以揭示两者之间的潜在关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第1关:美国犯罪率数据散点图绘制——散点图的基本绘制

# -*- coding: utf-8 -*-
import pandas as pd #用于生成满足绘图要求的数据格式
from matplotlib import pyplot as plt #用于绘制散点图
# import statsmodels.api as sm #用于局部加权回归

crime=pd.read_csv(r"matplotlibScatter/csv/crimeRatesByState2005.csv") #返回值为二维标记数据结构 DataFrame
def plot():
    # ********* Begin *********#

    fig,ax=plt.subplots() #subplots返回画布和子图
    crime2=crime[~crime['state'].isin(['District of Columbia','United States'])] #  获    取没有全美平均值和华盛顿特区的犯罪率数据
    ax.plot(crime2["murder"],crime2["burglary"],"*",color="#00AAFF") #绘制散点图
    ax.set_xlabel("crime murder", fontsize=12)  #设置x轴标签
    ax.set_ylabel("crime burglary", fontsize=12)  #设置y轴标签
    ax.set_xlim(0,10) #x轴范围从0到10
    ax.set_ylim(0,1200) #y轴范围从0到1200
    plt.show() #展示图像


    # ********* End *********#
    plt.savefig('matplotlibScatter/studentanswer/level_1/crime.png') #保存为png格式
    plt.close() #关闭画布窗口

第2关:美国犯罪率数据散点图绘制——局部加权回归

# -*- coding: utf-8 -*-
import pandas as pd #用于生成满足绘图要求的数据格式
from matplotlib import pyplot as plt#用于绘制散点图
import statsmodels.api as sm #用于局部加权回归
 
crime=pd.read_csv(r"matplotlibScatter/csv/crimeRatesByState2005.csv") #返回值为二维标记数据结构 DataFrame
def plot():
    # ********* Begin *********#
 
    plt.figure(figsize=(8,4))
    fig,ax=plt.subplots()
    crime2=crime[~crime['state'].isin(['District of Columbia','United States'])]
    lowess = sm.nonparametric.lowess(crime2["burglary"],crime2["murder"])
    ax.plot( lowess[ :,0],lowess[ :,1])
    ax.plot(crime2["murder" ], crime2["burglary"],"*",color="#00CC88")
    ax.set_xlabel("crime murder" ,fontsize=12)
    ax.set_ylabel("crime burglary" ,fontsize=12)
    ax.set_title("美国谋杀率和入室盗窃率",fontproperties="SimHei",fontsize=16)
    ax.set_xlim(0,10) 
    ax.set_ylim(0,1200)
    plt.show()
 
    # ********* End *********#
    plt.savefig('matplotlibScatter/studentanswer/level_2/crime.png') #保存为png格式
    plt.close() #关闭画布窗口
### 如何生成相对误差的散点图 要生成相对误差的散点图,可以按照以下方法实现。以下是详细的说明以及代码示例。 #### 数据准备 为了计算相对误差并绘制其散点图,首先需要定义相对误差公式。假设我们有预测值 \( y_{\text{pred}} \) 和真实值 \( y_{\text{true}} \),则相对误差可以通过下述公式计算: \[ \text{Relative Error} = \frac{|y_{\text{pred}} - y_{\text{true}}|}{y_{\text{true}}} \] 此公式的前提是 \( y_{\text{true}} \neq 0 \)[^1]。 #### Python 实现 利用 `numpy` 进行数值运算,并通过 `matplotlib` 绘制散点图。以下是完整的代码示例: ```python import numpy as np import matplotlib.pyplot as plt # 假设这是我们的数据集 y_true = np.array([2, 4, 6, 8, 10]) # 真实值 y_pred = np.array([2.5, 3.9, 6.2, 7.8, 10.5]) # 预测值 # 计算绝对误差和相对误差 absolute_error = np.abs(y_pred - y_true) relative_error = absolute_error / y_true # 创建散点图 plt.figure(figsize=(8, 6)) plt.scatter(range(len(relative_error)), relative_error, color='blue', label='Relative Error') # 添加标签和其他细节 plt.title('Scatter Plot of Relative Errors') plt.xlabel('Data Point Index') plt.ylabel('Relative Error') plt.legend() plt.grid(True) # 显示图表 plt.show() ``` 上述代码实现了如下功能: - 使用 `np.abs()` 函数计算绝对误差。 - 利用数组除法操作计算相对误差。 - 调用 `matplotlib.pyplot.scatter()` 方法绘制散点图。 #### 结果解释 该散点图展示了每个数据点对应的相对误差大小。横轴表示数据点索引,纵轴表示相对误差值。如果某些数据点的真实值接近零,则可能导致相对误差过大,在这种情况下可能需要进一步处理异常值或调整可视化范围[^2]。 --- #### 注意事项 当真实值中有非常小或者等于零的情况时,可能会引发除零错误或导致相对误差变得无穷大。因此建议在实际应用中加入条件判断逻辑以过滤掉这些特殊情况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

问问问你的心

一起学习一起努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值