最近学习Pyechart绘制各种图表进行数据可视化
Pyecharts现在支持表格和图片
今天突然想试试能不能支持视频
尝试了一番,成功了,只需对代码进行小小改动
首先找到Table和Image的相关代码:
在以下目录
xxx\Lib\site-packages\pyecharts\components
将image.py文件复制一份,命名为video.py,打开文件对其修改如下:
再在__init__.py文件添加一行代码
from .video import Video
再在如下目录找到 macro文件
xxx\Lib\site-packages\pyecharts\render\templates
打开文件,添加一个elif语句,把img标签改为:
还需将macro文件前部修改,否则渲染html会出错:
macro文件修改如下两处:
# 修改1:
{% if c.js_functions %}
{% for js in c.js_functions.items %}
{{ js }}
{% endfor %}
{% endif %}
# 修改2:
{% if c.width.endswith and c.width.endswith('%') %}
window.addEventListener('resize', function(){
chart_{{ c.chart_id }}.resize();
})
{% endif %}
传递两个属性width和height值:
调用时需要添加视频/音频文件地址src和标签长宽属性width和height
大功告成,现在支持视频了
下面是仿照image_example.py改的video_example.py,运行代码即可生成篇头的html文件
from pyecharts.components import Video
from pyecharts.options import ComponentTitleOpts
def video_base() -> Video:
video = Video()
video_src = "https://img.soulapp.cn/video/2020-02-27/6653a205-8dee-4a84-b8bf-97da932dad8c.mp4"
video.add(
src=video_src,
style_opts={"width": "720px", "height": "960px", "style": "margin-top: 20px"},
).set_global_opts(
title_opts=ComponentTitleOpts(title="Video-基本示例", subtitle="我是副标题支持换行哦")
)
return video
video_base().render()
音频也是类似操作
下面是修改后的文件,替换相应文件即可实现pyecharts支持音频和视频