Python讀取Excel數據生成圖表 v2.0


Python讀取Excel數據生成圖表 v2.0

一、需求背景

自己一直在做一個周基金定投模擬,每周需要添加一行數據,並生成圖表。以前一直是用Excel實現的。但數據行多后,圖表大小調整總是不太方便,一般只能通過縮放比例解決。

二、需求實現目標

通過Python程序讀取Excel文件中的數據,生成圖表,最好將生成圖表生成至瀏覽器頁面,后期數據多之后,也能自動縮放,而不會出現顯示不全問題。

三、需求實現代碼

# 調用本地echarts.min.js 文件

from pyecharts.globals import CurrentConfig
CurrentConfig.ONLINE_HOST ='D:\\develop_study\\Python38\\pyecharts\\' 

from pyecharts.charts import Line  # 數據可視化折線圖
import pyecharts.options as opts
import xlrd  # 讀取excel文件
import webbrowser   # 用於自動打開生成的HTML文件

# 打開excel
data = xlrd.open_workbook('E:\知識點滴積累\蝸牛定投價格曲線_python.xlsx')  # 打開excel工作簿
table = data.sheet_by_index(1)  # 打開第一個頁簽
print(f'當前已定投周數:{table.nrows}-1')  # 獲取行數
print(f'當前總計列數:{table.ncols}') # 獲取列數

# print(table.row_values(0))  # 獲取行數據

dt_dates = []   # 日期
dt_hs300s =[]  # 滬深300
dt_zz500s =[]  # 中證500
dt_nz100s =[]  # 納指100
dt_bp500s =[]  # 標普500


for i in range(1,table.nrows):
    dt_date = table.row_values(i)[0]
    dt_dates.append(dt_date)

    dt_hs300 = table.row_values(i)[1]
    dt_hs300s.append(dt_hs300)

    dt_zz500 = table.row_values(i)[2]
    dt_zz500s.append(dt_zz500)

    dt_nz100 = table.row_values(i)[3]
    dt_nz100s.append(dt_nz100)

    dt_bp500 = table.row_values(i)[4]
    dt_bp500s.append(dt_bp500)

# print(dt_dates)
# print(dt_hs300s)
# print(dt_zz500s)
# print(dt_nz100s)
# print(dt_bp500s)

# 折線圖
line = Line(init_opts=opts.InitOpts(width='1200px',height='700px'))
line.add_xaxis(dt_dates)
line.add_yaxis('滬深300', dt_hs300s)
line.add_yaxis('中證500', dt_zz500s)
line.add_yaxis('納指100', dt_nz100s)
line.add_yaxis('標普500', dt_bp500s)


# 所有折線圖顯示平均值、最大值、最小值
line.set_series_opts(
    markpoint_opts=opts.MarkPointOpts(
        data=[
                    opts.MarkPointItem(type_='average',name='平均值'),
                    opts.MarkPointItem(type_='max',name='最大值'),
                    opts.MarkPointItem(type_='min',name='最小值')
        ]
    )

)


# 設置標題等
line.set_global_opts(title_opts=opts.TitleOpts('跟蹤指數周變化曲線'),
                     # 顯示工具箱
                     toolbox_opts=opts.ToolboxOpts(),
                     xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate":45,"interval":0})

                     )
        # interval:0 橫軸信息全部顯示
        # rotate:45  45度傾斜顯示
        

line.render('價格曲線可視化3.html')
webbrowser.open('價格曲線可視化3.html')


添加標題

x軸刻度全部顯示

設置各對象最大值、最小值、平均值

設置圖表大小

四、需求實現效果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM