使用Pyecharts和BeautifulSoup创建和定制图表

一.使用Pyecharts和BeautifulSoup创建和定制图表

在这篇博文中以六个图像为例,我们将学习如何使用pyecharts库来创建图表,并使用BeautifulSoup库来定制图表的样式和布局。

  • 图形简示
图形🙃图形😂图形😊
图形🙌图形👌图形❤️

二.创建图表

首先,我们需要创建一些图表。在这个示例中,我们将创建六个个不同的图表,我们将使用pyecharts库来创建这些图表。

  • 导入模块
from pyecharts import options as opts
from pyecharts.charts import Bar, Page, Line, Pie
from pyecharts.faker import Faker
  • 创建六个图形,每个图形都有自己的x轴和y轴的数据,以及全局的选项。
bar = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"))
)
# 以下是创建其他三个图形的代码,与上面的类似
line = (
    Line()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(title_opts=opts.TitleOpts(title="Line-基本示例", subtitle="我是副标题"))
)

pie = (
    Pie()
    .add("", [list(z) for z in zip(Faker.choose(), Faker.values())])
    .set_global_opts(title_opts=opts.TitleOpts(title="Pie-基本示例"))
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)

bar2 = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(title_opts=opts.TitleOpts(title="Bar2-基本示例", subtitle="我是副标题"))
)
bar3 = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
    .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
    .set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
)
liquid = (
    Liquid()
    .add("lq", [0.3, 0.7], is_outline_show=False, shape=SymbolType.DIAMOND)
    .set_global_opts(title_opts=opts.TitleOpts(title="Liquid-Shape-Diamond"))
)

在这个代码中,我们使用了Faker库来生成假数据。你可以根据你的需求替换这些数据。

  • 将图表添加到页面中
page = Page()
page.add(bar, line, pie, bar2,bar3,liquid)
  • 渲染页面并保存为HTML文件
page.render("page.html")
  • 之后将显示
    在这里插入图片描述
    这就说明将图像保存到html文件中了

三.使用BeautifulSoup定制图表

最后,将使用BeautifulSoup库来定制图表的样式和布局。

  • 使用BeautifulSoup库来解析和修改HTML文件
from bs4 import BeautifulSoup
with open("page.html", "r+", encoding='utf-8') as html:
    html_bf = BeautifulSoup(html, 'lxml') # 解析HTML文件
    divs = html_bf.select('.chart-container') # 根据css定位标签,选中图像的父节点标签
     # 修改每个元素的样式,包括宽度、高度、位置和边框
    divs[0]["style"] = "width:420px;height:274px;position:absolute;top:100px;left:5%;border-style:solid;border-color:#444444;border-width:2px;"
    divs[1]["style"] = "width:420px;height:274px;position:absolute;top:100px;left:35%;border-style:solid;border-color:#444444;border-width:2px;"
    divs[2]["style"] = "width:420px;height:274px;position:absolute;top:100px;left:65%;border-style:solid;border-color:#444444;border-width:2px;"
    divs[3]["style"] = "width:420px;height:274px;position:absolute;top:400px;left:5%;border-style:solid;border-color:#444444;border-width:2px;"
    divs[4]["style"] = "width:420px;height:274px;position:absolute;top:400px;left:35%;border-style:solid;border-color:#444444;border-width:2px;"
    divs[5]["style"] = "width:420px;height:274px;position:absolute;top:400px;left:65%;border-style:solid;border-color:#444444;border-width:2px;"
    body = html_bf.find("body") # 根据标签名称定位到body标签
    body["style"] = "background-color:white;" # 修改背景颜色
    html_new = str(html_bf) # 将BeautifulSoup对象转换为字符
    html.seek(0, 0) # 光标移动至
    html.truncate() # 删除光标后的所有字符内容
    html.write(html_new) # 将由BeautifulSoup对象转换得到的字符重新写入html文件
    html.close()

这段代码将每个图表元素的宽度和高度都设置为420px和274px,位置设置为绝对位置,边框设置为2px宽的#444444颜色的实线。这样,我们就可以在页面上看到一个2*3的图表布局。

四.图像展示

在这里插入图片描述
希望这篇博文能帮助你更好地理解如何使用pyecharts和BeautifulSoup来创建和定制图表。如果你有任何问题或者需要进一步的帮助,欢迎随时向我提问。😊

五.分享学习资源

Echarts是一个由百度开源的基于js语言的数据可视化框架,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。
相较于matplotlib而言,pyecharts库绘制的图形种类更多,样式更精美、丰富。
Pyecharts官网有Pyecharts的使用文档,社区包含各种图形的项目案例代码和演示。
Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库.
它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.
Beautiful Soup会帮你节省数小时甚至数天的工作时间.

此外,如你基础比较薄弱,又对编程这方面感兴趣,您可以前往菜鸟教程学习相关知识!😊
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值