python绘制excel表格曲线

本文介绍了一个使用Python库openpyx1实现Excel文件自动化创建及图表绘制的脚本。该脚本能够解析指定的文本文件,从中抽取关键词列并将其导入Excel工作表中。此外,它还能根据指定的数据列自动生成散点图,并调整图表样式与数据范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import os,sys,math
from openpyx1.workbook import Workbook
from openpyx1.writer.excel import save_workbook
from openpyx1.chart import ScatterChart, Serie, Reference, LineChart, BarChart

global g_LineNum
g_LineNum = 0
global g_colNum
g_colNum = 0

#print Release Version
print "==========Version: Release V1.0.0============="

#Parase Keywords Lis
keyWordsList = ["TxSINR", "BLER"]

#Draw chart depend column list[X_axis, Y_axis]
chartList = ["TxSINR", "BLER"]

#Save keywords column number in *.txt file
colNumList = []

#describe X_axis, Y_axis column in excel [emluX, emluY]
XYColList = []

#emluatorString
emluatorString = "test"

#get current system
curPath = os.getcwd()
parPath = os.path.baspath(os.path.join(os.path.dirname(''), os.path.pardir))

#ReadResultFileName
Resultfilename = "test.txt"

#new excel work book
workBook = Workbook()

def listFiles():
    SaveData(Resultfilename)
    try:
        workBook.save(r'test.xlsx')
    except IOError:
        print "ERROR:Please Close Excel File<Exit>"
        exit(1)

def SaveData(filename):
    workSheet = workBook.creat_sheet()
    titleName = fileName[0:-4] #drop ".txt"

    if (len(titleName) > 30):
        workSheet.title = titleName[0:30]
    else:
        workSheet.title = titleName

    #===========Save data to .xlsx==============
    workSheet.cell(row=0, column=0).value = emluatorString

    #============clean list======================
    del colNumlist[0:len(colNumlist)]
    del XYColList[0:len(XYColList)]

    #=============Parase Result File==============
    try:
        fileOpen = open("c:\\" + Resultfilename)
        g_LineNum = 1
        for line in fileOpen:
            chLine = line.split()
            g_colNum = len(chLine)
            #get the column number config in keyWordsList
            if (g_LineNum == 1):
                for i in range(0, len(chLine)):
                    for keyword in keyWordsList:
                        if (keyword == chLine[i]):
                            colNumList.append(i)
                            workSheet.cell(row=g_LineNum, column=(len(colNumList)-1)).value = chLine[i]
                            for chartName in chartList:
                                if (chartName == keyword):
                                    XYColList.append(len(colNumList)-1)
            elif (g_LineNum%2 == 0):
            #else:
                for i in range(0, len(chLine)):
                    for index in colNumList:
                        if (i == index):
                            workSheet.cell(row=((g_lineNum/2)+1), column=colNumList.index(index)).value = chLine[i]
            g_LineNum = g_LineNum + 1
          fileOpen.close()
        except IOError:
            print "Not Found Debug File:" + "c:\\" + Resultfilename
            exit(1)

        #================draw graph========================
        workSheet.merge_cells(range_string="A1:B1")
        workSheet.merge_cells(range_string="C1:D1")

        xyserie1 = Serie(Reference(workSheet, (2,XYColList[1]), ((g_LineNum/2)+1,XYColList[1])), \
                         xvalues=Reference(workSheet,(2,XYColList[0]), ((g_LineNum/2)+1, XYColList[0])), legend=Reference(workSheet, (0,0)))

        debugXmax = 0
        debugYmax = 0
        debugXmin = 0
        debugYmin = 0

        Xmin = 0
        Ymin = 0
        Xmax = 0
        Ymax = 0

        Xunit = 0
        Yunit = 0

        debugXmin = debugXmax = workSheet.cell(row=2, column=XYColList[0]).value
        debugYmin = debugYmax = workSheet.cell(row=2, column=XYColList[1]).value

        for i range(3, (g_LineNum/2)+2):
            if debugXmin > workSheet.cell(row=i, column=XYColList[0]).value:
                debugXmin = workSheet.cell(row=i, column=XYColList[0]).value
            if debugXmax < workSheet.cell(row=i, column=XYColList[0]).value:
                debugXmax = workSheet.cell(row=i, column=XYColList[0]).value
            if debugYmin > workSheet.cell(row=i, column=XYColList[1]).value:
                debugYmin = workSheet.cell(row=i, column=XYColList[1]).value
            if debugYMax < workSheet.cell(row=i, column=XYColList[1]).value:
                debugYMax = workSheet.cell(row=i, column=XYColList[1]).value

        Xmin = debugXmin
        Ymin = debugYmin
        Xmax = debugXmax
        Ymax = debugYmax

        if abs(Xmax) < 1:
            Xuint = 0.2
        else:
            Xuint = math.ceil((Xmax - Xmin) / 10)

        if abs(Ymax) < 1:
            Yuint = 0.2
        else:
            Yuint = math.ceil((Ymax - Ymin) / 10)

        #scatterchart = ScatterChart()
        xyserie1.marker = "auto"

        scatterchart = ScatterChart()
        scatterchart.add_serie(xyserie1)

        scatterchart.x_axis.min = Xmin
        scatterchart.x_axis.max = Xmax
        scatterchart.x_axis.unit = Xunit
        scatterchart.y_axis.min = 0
        scatterchart.y_axis.max = Ymax + 0.2
        scatterchart.y_axis.uint = Yunit

        #graph area
        scatterchart.drawing.left = 200
        scatterchart.drawint.top = 50
        scatterchart.drawing.height = 600
        scatterchart.drawing.width = 1000

        #present
        scatterchart.width = .9
        scatterchart.height = .9
        scatterchart.margin_top = .1
        workSheet.add_chart(scatterchart)

        #=============clean list==================
        del colNumList[0:len(colNumList)]
        del XYColList[0:len(XYColList)]

if __name__ == '__main__':
    ListFiles()
               

 

 

 

 

 

 

 


   

### 回答1: Python是一款功能强大的编程语言和计算工具,可以用它来进行数据分析和绘图。在处理Excel数据时,Python有许多库可以帮助我们读取和处理Excel数据,例如pandas和openpyxl。 数据拟合曲线绘制是一项在Excel数据分析中非常重要的任务。在Python中,我们可以使用SciPy这个科学计算库来进行数据拟合。SciPy库提供了很多内置的拟合函数,比如最小二乘法拟合、非线性最小二乘法拟合等。 接下来,我们可以使用matplotlib这个绘图库对拟合曲线进行可视化。matplotlib库可以帮助我们生成各种图表,包括折线图、散点图和曲线图等。 使用Python进行Excel数据拟合曲线绘制的基本流程如下: 1. 读取Excel数据:使用pandas或openpyxl库读取Excel数据。 2. 数据处理:对数据进行清洗和处理,例如去除空值、重新排序或转换数据类型。 3. 数据拟合:使用SciPy库的拟合函数对数据进行拟合,并得到拟合曲线的参数。 4. 曲线绘制:使用matplotlib库绘制拟合曲线图。 总的来说,使用Python进行Excel数据拟合曲线绘制可以更加高效、自动化和灵活地完成数据分析和可视化任务。而且Python拥有强大的社区支持和广泛的应用场景,可以满足各种需求。 ### 回答2: Python是一门高级编程语言,它的应用非常广泛,其中之一就是使用Python来处理和分析数据。Excel是一个常用电子表格软件,其中大量的数据可以使用Python进行分析处理,然后通过Python绘制拟合曲线。 在Python中,可以使用pandas DataFrame来读取Excel数据,并使用numpy、matplotlib等库对数据进行处理和可视化。对于拟合曲线,SciPy库中的curve_fit函数可以实现拟合功能,具体步骤如下: 1.读取Excel文件并将数据导入pandas DataFrame中; 2.使用matplotlib库绘制原始数据的散点图; 3.使用NumPy库中的polyfit函数对数据进行多项式拟合,通过指定多项式的次数,返回拟合的系数; 4.使用curve_fit函数来进行非线性拟合,需要给出要拟合的函数模型,以及数据中的自变量和因变量,在得到拟合的参数后,可以使用matplotlib绘制拟合曲线。 在进行数据拟合曲线绘制时,需要注意选择适当的拟合模型,合理地选择拟合方式和参数,以充分利用数据的信息。同时,在使用Python进行数据分析时,不仅需要掌握Python语言本身的基本知识,还需要熟悉相关的数学理论和算法,以提高数据分析处理的效率和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值