You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Matplotlib为英国郡犯罪率vs人口散点图添加郡名标签

为英国郡犯罪率-人口散点图添加郡名标注

以下是用numpy、pandas和matplotlib实现散点图并为每个数据点标注郡名的具体方案:

1. 导入所需库

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

2. 加载并预处理数据

假设你的数据存储在CSV文件中,包含county(郡名)、population(人口)、crime_rate(犯罪率)三列:

# 读取数据
df = pd.read_csv('uk_counties_data.csv')

# 提取核心数据列
populations = df['population'].values
crime_rates = df['crime_rate'].values
counties = df['county'].values

3. 绘制散点图并添加标注

用plt.scatter()绘制基础散点图,再通过循环调用plt.annotate()为每个数据点绑定郡名:

# 创建画布,设置合适尺寸
plt.figure(figsize=(12, 8))

# 绘制散点图,设置样式
plt.scatter(populations, crime_rates, color='steelblue', alpha=0.7, edgecolor='white')

# 循环为每个点添加标注
for pop, rate, county in zip(populations, crime_rates, counties):
    # 标注位置偏移,避免覆盖数据点
    plt.annotate(county, 
                 xy=(pop, rate), 
                 xytext=(6, 6),  # 文本相对数据点的偏移像素
                 textcoords='offset points',
                 fontsize=8,
                 color='darkred')

# 设置图表基础信息
plt.xlabel('人口', fontsize=10)
plt.ylabel('犯罪率', fontsize=10)
plt.title('英国各郡犯罪率与人口分布散点图', fontsize=12)

# 添加网格辅助观察
plt.grid(True, linestyle='--', alpha=0.5)

# 自动调整布局,避免标签被截断
plt.tight_layout()
plt.show()

4. 标注优化技巧(可选)

如果数据点密集导致标注重叠,可尝试以下调整:

  • 缩小字体大小(比如fontsize=7)
  • 给标注添加旋转角度,比如rotation=30
  • 调整xytext的偏移方向,对不同区域的点设置不同偏移量
  • 安装adjustText库,用adjust_text()函数自动优化标注位置

内容的提问来源于stack exchange,提问作者Lucas Oldrey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 05:43:11