如何按Class类别分组绘制values2与values3的散点图并分析相关性
实现方案
该需求完全可以实现,你可以通过遍历分组后的类别单独生成每个Class对应的散点图,也可以通过分面绘图将所有类别的散点图放在同一画布中方便对比,以下是两种常用实现方式:
方式1:遍历分组逐个生成独立散点图
你已经生成了按Class分组的List1和List2,直接循环遍历索引即可逐个出图:
import matplotlib.pyplot as plt # 遍历所有车辆类别 for class_type in List1.index: values2_data = List1[class_type] values3_data = List2[class_type] # 初始化画布 plt.figure(figsize=(7, 4)) # 绘制散点图,alpha设置透明度避免点重叠 plt.scatter(values2_data, values3_data, alpha=0.6, edgecolor='k') # 配置图表标签 plt.title(f"{class_type}:values2与values3相关性散点图") plt.xlabel("values2取值") plt.ylabel("values3取值") plt.grid(linestyle="--", alpha=0.3) # 展示图片,如需保存可替换为 plt.savefig(f"./{class_type}_散点图.png", dpi=200) plt.show()
方式2:一键生成分面散点图(无需提前生成List1/List2)
直接基于原始DataFrame使用seaborn的分面绘图能力,所有类别的散点图会放在同一画布的不同子图中,对比更直观:
import matplotlib.pyplot as plt import seaborn as sns # col参数指定按Class列分面,col_wrap设置每行展示2个子图 sns.FacetGrid(vehiclesData, col="Class", col_wrap=2, height=3.5)\ .map(plt.scatter, "values2", "values3", alpha=0.6, edgecolor="k") # 自动调整子图间距 plt.tight_layout() plt.show()
内容的提问来源于stack exchange,提问作者user15200538
相关产品推荐
相关产品推荐

