如何使用Matplotlib绘制时间与浓度关系图?求可运行代码
解决方法:用Matplotlib绘制时间与浓度的关系图
没问题,我来帮你搞定这个!首先咱们得先把你的数据整理成正确的格式(或者直接在代码里处理原始数据,这样更省事),然后用Matplotlib画出时间和浓度的关系图。下面是完整的可运行代码,包含了数据处理和绘图的全部步骤:
第一步:整理数据格式
你的原始数据是一串用空格分隔的时间-浓度对,正确的CSV格式应该每行存一组数据,像这样:
18-10-2019 17:18,31.827753 18-10-2019 17:19,61.8619 18-10-2019 17:20,64.44997 18-10-2019 17:21,64.72129 18-10-2019 17:22,56.089733
不过为了让你直接运行代码不用额外创建文件,我把数据直接写在了代码里,你可以直接复制运行:
完整可运行代码
import pandas as pd import matplotlib.pyplot as plt # 把你的原始数据整理成列表,每个元素是(时间字符串, 浓度值) raw_data = [ ("18-10-2019 17:18", 31.827753), ("18-10-2019 17:19", 61.8619), ("18-10-2019 17:20", 64.44997), ("18-10-2019 17:21", 64.72129), ("18-10-2019 17:22", 56.089733) ] # 转换成DataFrame,方便后续处理时间和绘图 df = pd.DataFrame(raw_data, columns=["时间", "浓度"]) # 关键步骤:把时间字符串解析成datetime类型,指定格式为"日-月-年 时:分" # 这一步是避免报错的核心,Matplotlib需要正确的时间格式才能正常渲染轴 df["时间"] = pd.to_datetime(df["时间"], format="%d-%m-%Y %H:%M") # 开始绘制折线图 plt.figure(figsize=(10, 6)) # 设置图形的宽高,让图表更清晰 plt.plot(df["时间"], df["浓度"], marker='o', linestyle='-', color='#1f77b4', linewidth=2) # 添加图表标题和轴标签 plt.title("时间与浓度变化趋势", fontsize=14, pad=15) plt.xlabel("采样时间", fontsize=12) plt.ylabel("浓度值", fontsize=12) # 旋转x轴的时间标签,避免重叠在一起 plt.xticks(rotation=45, ha='right') # 自动调整布局,防止标签被截断 plt.tight_layout() # 显示图表 plt.show()
如果你想从CSV文件读取数据
如果你已经把数据保存成了上面的CSV格式(比如文件名叫concentration_data.csv),可以把代码里的raw_data和df部分替换成下面的代码:
# 从CSV文件读取数据,同时直接解析时间列 df = pd.read_csv( "concentration_data.csv", names=["时间", "浓度"], # 指定列名 parse_dates=["时间"], # 告诉pandas要解析时间列 date_parser=lambda x: pd.to_datetime(x, format="%d-%m-%Y %H:%M") # 指定时间格式 )
为什么你之前可能报错?
大概率是因为时间格式没有正确解析:Matplotlib无法直接识别字符串格式的时间,必须先转换成datetime类型;另外如果你的CSV格式不对(比如所有数据都在一行),读取时会导致列数不匹配,也会报错。上面的代码已经帮你处理了这两个问题。
内容的提问来源于stack exchange,提问作者Amish Bharti
相关产品推荐
相关产品推荐

