我是靠谱客的博主 伶俐大碗,最近开发中收集的这篇文章主要介绍Python处理多个csv文件生成叠加曲线图,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近在帮女朋友处理一些数据,就顺手写一些博客记录一下过程。

环境:Anaconda3(Jupyter Notebook)

实验数据:两个csv文件,双列(截取部分)

代码:

from matplotlib import pyplot as plt
import csv
import glob
from os.path import basename
from scipy.interpolate import make_interp_spline
import numpy as np

fig=plt.figure(dpi = 300, figsize=(10,6))                          
# plt.title("图片标题",fontsize = 16)
plt.xlabel("Wavelength(nm)", fontsize = 16)    #横坐标
plt.ylabel("Absorbance", fontsize = 16)        #纵坐标
files = sorted(glob.glob("*.csv"))    #读取目录下所有以.csv结尾的文件,这里可以添加绝对路径
for file in files:
    filename = basename(file).rsplit('.', 1)[0]         #用.来分割文件名,取前半部分,例如XX.csv,取XX                                                
#     print('r'+ filename + "  ", flush = True)                                                             
    with open(file) as f:                                                                                
        csvreader = csv.reader(f, delimiter = ",", quotechar='"')                                       
        for line in range(0):  #0代表从文件第一行开始读取
            next (csvreader)                                                                            
        Wavelength = []                                                                                    
        Absorbance = []    #横纵坐标分别建立了两个list
        for row in csvreader:
            Wavelength.append(float(row[0]))                                                               
            Absorbance.append(float(row[1]))          #读取数据,放入list                                                             
        #平滑处理
        Wavelength_array=np.array(Wavelength)
        Absorbance_array=np.array(Absorbance)    #list转array,为了调用下面的min,max
        plt.xlim((180,820))
        plt.ylim((0,4))
        x_smooth = np.linspace(Wavelength_array.min(), Wavelength_array.max(), 300)
        y_smooth = make_interp_spline(Wavelength_array, Absorbance_array)(x_smooth)
        plt.plot(x_smooth, y_smooth) 
#         plt.plot(voltage, current, '-', label=filename)
#         plt.legend()                                             #原本是做了一个右上角的label的,但是她不要
    
#       print("Done processing " + str(len(files)) + " files.")                                                 
plt.show()                                                                                               
# plt.savefig('图片名' + '.png', dpi = 300)   #不知道为什么保存了啥也看不到…       

 生成图片样式:

最后

以上就是伶俐大碗为你收集整理的Python处理多个csv文件生成叠加曲线图的全部内容,希望文章能够帮你解决Python处理多个csv文件生成叠加曲线图所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(389)

评论列表共有 0 条评论

立即
投稿
返回
顶部