基于Matplotlib实现散点图按region列颜色编码的方法
按地区给散点图数据点颜色编码的实现方法
下面给你两种常用Python绘图库的实现方案,都能基于CSV里的region列完成颜色编码:
第一步:读取CSV数据
先使用pandas读取你的数据文件,这是处理CSV最方便的工具:
import pandas as pd # 替换成你的CSV文件路径 df = pd.read_csv('uk_cities_data.csv')
方案1:使用Matplotlib手动编码颜色
适合需要自定义颜色细节的场景:
import matplotlib.pyplot as plt import numpy as np # 获取所有唯一的地区类别 unique_regions = df['region'].unique() # 生成对应数量的区分度高的颜色(用tab10色系,最多支持10种不同地区) color_palette = plt.cm.tab10(np.linspace(0, 1, len(unique_regions))) plt.figure(figsize=(10, 6)) # 循环每个地区,绘制对应的数据点 for idx, region in enumerate(unique_regions): # 筛选当前地区的数据 region_data = df[df['region'] == region] # 替换x_column和y_column为你实际用来绘制散点的数值列(比如经度、纬度、人口等) plt.scatter(region_data['x_column'], region_data['y_column'], color=color_palette[idx], label=region, alpha=0.7) # 透明度避免点重叠遮挡 # 添加图表元素 plt.legend(title='地区') plt.xlabel('X轴数据名称') plt.ylabel('Y轴数据名称') plt.title('英国城市散点图(按地区颜色区分)') plt.show()
方案2:使用Seaborn快速实现
Seaborn封装了分组逻辑,代码更简洁,适合快速出图:
import seaborn as sns import matplotlib.pyplot as plt plt.figure(figsize=(10, 6)) # 直接指定hue参数为region列,自动完成颜色编码和图例 sns.scatterplot(data=df, x='x_column', # 替换为你的X轴列名 y='y_column', # 替换为你的Y轴列名 hue='region', palette='tab10', # 颜色方案,可根据地区数量调整 alpha=0.7) plt.title('英国城市散点图(按地区颜色区分)') plt.xlabel('X轴数据名称') plt.ylabel('Y轴数据名称') plt.legend(title='地区') plt.show()
注意事项
- 一定要把代码里的
x_column和y_column替换成你CSV中实际用于绘制散点的数值列(比如经度、纬度、GDP、人口数等) - 如果你的地区数量超过10个,建议更换颜色方案,比如用
palette='viridis'或者'plasma'这类渐变色系 alpha参数可以调整点的透明度,当数据点密集重叠时很有用
内容的提问来源于stack exchange,提问作者Lewis Hannaford
相关产品推荐
相关产品推荐

