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

使用for循环筛选DataFrame数据绘图时,如何实现多组数据叠加而非生成多张图?

问题解决:Matplotlib多组数据同图绘制失败

哈哈,这个问题我刚入门Matplotlib的时候也踩过一模一样的坑!你现在的问题根源特别简单——plt.show()放错位置啦~

你当前的代码里,每次循环绘制完一组数据就调用plt.show(),这会让Matplotlib每次都把当前的绘图内容单独弹出成一张新图。要把所有数据叠在同一张图里,只需要把plt.show()移到for循环外面,等所有组的数据都绘制完成后再一次性显示图表就行。

另外,我还帮你优化了代码,加上了图例、坐标轴标签和标题,这样图表的可读性会强很多:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('Kd.csv')
watertype = ['Evian','Volvic','Buxton']

# 循环绘制所有数据
for type in watertype:
    sdf = df[(df['Water']==type)]
    Na = sdf.iloc[:,13]
    Kd = sdf.iloc[:,2]
    # 加上label参数,方便后续显示图例区分不同水源
    plt.plot(Na, Kd, 'o', label=type)

# 所有数据绘制完成后再统一显示图表
plt.xlabel('Na')  # 设置x轴标签
plt.ylabel('Kd')  # 设置y轴标签
plt.title('Kd vs Na for Different Water Types')  # 添加图表标题
plt.legend()  # 显示图例,明确每组点对应的水源
plt.show()

关键修改点说明:

  • 将plt.show()移出for循环:确保所有散点都绘制到同一个画布上后再显示最终图表
  • 添加label=type参数:让每个散点系列关联对应的水源名称,配合plt.legend()可以清晰区分各组数据
  • 补充坐标轴标签和标题:让图表信息更完整,不用猜测每个轴代表的含义

这样修改后,你就能得到一张包含三组数据的叠加散点图啦!

内容的提问来源于stack exchange,提问作者Alasdair Knight

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:13:55