Python学习之使用pycharts

简介:

通过读取【charts_demo.xlsx】文件数据,使用pycharts生成名为【page_simple_layout.html】的HTML图表。

python 复制代码
from pyecharts.charts import Bar,Page
from pyecharts import options as opts
from openpyxl import load_workbook
import numpy as np
import math
from pyecharts.globals import ThemeType
import os

#split the arr into N chunks
def chunks(arr, m):
    n = int(math.ceil(len(arr) / float(m)))
    return [arr[i:i + n] for i in range(0, len(arr), n)]

def build_bar():
    hor_num = ws['C5'].value
    ord_num = ws['C4'].value
    xtype=[]
    xline=[]
    yline=[]
    yline2=[[]]
    for col in ws.iter_cols(min_col=8, max_col=8+ord_num-1, min_row=3, max_row=3):
        for cell in col:
            xtype.append(cell.value)
    for col in ws.iter_cols(min_col=7, max_col=7, min_row=4, max_row=hor_num+3):
        for cell in col:
            xline.append(cell.value)
    for col in ws.iter_cols(min_col=8, max_col=8+ord_num-1, min_row=4, max_row=hor_num+3):
        for cell in col:
            yline.append(format((cell.value),'.0f'))#yline.append(format((cell.value),'.1f'))

    yline2 = chunks(yline,ord_num)
    #print(xtype)
    #print(xline)
    #print(yline)
    #print(yline2)

    bar2 = Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT,width='1200px'))
    #修改源文件使保存的图片背景为白色 opts.ToolBoxFeatureSaveAsImageOpts(background_color="white") 
    bar2.add_xaxis(xline)
    j=0
    for i in yline2:
        bar2.add_yaxis(xtype[j],i) 
        j=j+1
        if j>3:
            j=0
    bar2.set_global_opts(
    title_opts=opts.TitleOpts(title=str(ws['G3'].value)),
    tooltip_opts=opts.TooltipOpts(trigger="axis"),
    toolbox_opts=opts.ToolboxOpts(is_show=True,feature=opts.ToolBoxFeatureOpts(save_as_image=opts.ToolBoxFeatureSaveAsImageOpts(background_color="#F7F7F7"))),
    xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=True),
    #datazoom_opts=opts.DataZoomOpts(range_start=10,range_end=90), # 坐标轴进行缩放
    )
    return bar2

excel_name = "charts_demo.xlsx"
html_name = "page_simple_layout.html"

if __name__=='__main__':
    current_path = os.getcwd()
    excel_path = current_path+"\\"+excel_name
    html_patch = current_path+"\\"+html_name

    wb = load_workbook(excel_path, data_only=True)
    ws=wb['Sheet1']
    # 简单布局
    page = Page(layout=Page.SimplePageLayout)    
    # 将上面定义好的图添加到 page
    page.add(build_bar())
    page.render(html_patch)
    print('finish')

通过指定单元格G3的内容为图表名称,指定纵坐标个数【语文、数学、总分】,横坐标个数【张三、李四、王五、赵六、孙七、周八、吴九】:

运行py程序后,可以通过右上角一排按钮转换为折线图、柱状图,保存图片等。效果如下:

相关推荐
Nebula_g4 分钟前
云禾外卖补充—项目整体后端运行逻辑-对流程的更深层次理解
java·开发语言·网络·数据库·状态模式·javase
程序员小孔.13 分钟前
基于 SpringBoot + UniApp + Vue 的家政服务系统设计与实现
前端·数据库·spring boot·python·docker·微信小程序
程序猿乐锅34 分钟前
【从0-1学习Python | 第六篇】 Python 函数:定义、参数与返回值
开发语言·python·学习
G018_star sky♬35 分钟前
java中的字符串常见方法
java·开发语言
熊猫钓鱼>_>37 分钟前
Kotlin Multiplatform for OpenHarmony 实战:kotlinx-serialization JSON 适配
开发语言·华为·kotlin·华为云·json·harmonyos·code
MasonYyp2 小时前
声音转文字的模型
python
银河技术2 小时前
从脚本到 Operator:用 Go 构建可靠的微服务自动扩缩容控制器
开发语言·微服务·golang
GIS数据转换器4 小时前
地下空间综合管廊运营管理平台
大数据·开发语言·人工智能·经验分享·perl
Wang's Blog9 小时前
Java 项目实战: 交友项目:登录链路回顾与今日任务地图
java·开发语言·状态模式·交友
信誓旦旦的程序猿9 小时前
【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口