使用Python自动生成图文并茂的网页分析报告
在数据分析中,不管是市场研究还是科学分析,经常需要使用Python进行数据分析并生成图表报告。一般使用Python生成和展示图表时都是使用matplotlib 库生成静态图片文件,这种方式不便之处是不方便跟动态文字段落结合在一起,也不方便分享。特别是我们需要使用Python定时自动生成数据分析报告并通过网络发布时,如果使用Flask等网络框架,技术门槛比较高,实现复杂。本文探讨使用一种非常直接简单的方法来使用Python不依赖其他网络库直接生成图文并茂的网页文件,这种方法可以广泛应用到数据分析里。
思路和实现步骤
先利用 matplotlib 库绘制精美的数据图表,对数据进行直观呈现,接着将生成的图表保存为图片,再使用html代码模版以文本形式调用图片路径,然后将生成的HTML代码通过Python的文件读写功能以文本的形式保存为文件,文件格式设置为html。最后自动打开默认浏览器打开这个刚生成的html文件,这样Python程序运行完就马上看到了生成的图文并茂的html数据分析报告了。。
这个Python程序的主要功能是生成一个包含数据可视化图表和特定HTML内容的网页,并自动在默认浏览器中打开该网页。以下是对程序的详细总结:
1. 数据可视化部分
- 导入必要的库:导入了
pylab、webbrowser、matplotlib.pyplot,其中matplotlib.pyplot用于绘制图表,webbrowser用于在浏览器中打开网页。 - 设置图表参数:
- 设置图片的像素、分辨率和图表的尺寸。
- 解决中文显示问题,指定默认字体为
SimHei,并解决负号显示为方块的问题。
- 定义数据:定义了两个数据列表
y和y2,以及对应的x轴标签列表。 - 绘制图表:
- 设置图表的标题、
x轴和y轴的标签。 - 使用
plt.plot()函数绘制两条折线图,分别标记为Y和Y2,并设置了线条的颜色、标记样式等。 - 使用
legend()函数显示图例。 - 将
x轴标签倾斜45度。 - 在每个数据点上添加数字标签。
- 在指定位置添加文本说明。
- 反转
y轴。 - 将生成的图表保存为
1.jpg文件,并显示图表,最后关闭图表窗口。
- 设置图表的标题、
2. HTML文件生成部分
- 创建HTML文件:创建两个HTML文件
test.html和test2.html(这是为了测试对比,实际只需要生成1个文件)。 - 写入HTML内容:
- 在
test2.html中写入包含标题的HTML内容。 - 在
test.html中写入包含图片链接和自定义HTML内容的消息,其中图片链接指向之前生成的1.jpg文件。
- 在
- 关闭文件:关闭两个HTML文件。
3. 浏览器打开部分
- 使用
webbrowser.open()函数在默认浏览器中打开test.html文件。
综上所述,该程序的主要目的是将数据可视化图表和特定的HTML内容整合到一个网页中,并自动在浏览器中展示。
最后上完整代码:
# coding:utf-8
"""
此 Python 代码具备强大的功能,能将数据可视化与网页生成巧妙结合。它先利用 matplotlib 库绘制精美的折线图,对数据进行直观呈现,解决了中文显示、负号显示等细节问题。接着将生成的图表保存为图片,再自动创建 HTML 文件,把图表和预设的 HTML 内容整合到网页中,最后自动在默认浏览器中打开网页,实现数据的可视化展示与传播。
适用人群
适合数据分析师、营销人员、学生等人群。数据分析师可用其直观展示数据分析结果;营销人员能借此展示销售数据、市场趋势等;学生则可用于课程作业、项目展示等。
yl,2024年
"""
from pylab import *
import webbrowser #浏览器控制库,如果仅仅是生成html文件可以不用
import matplotlib.pyplot as pltstr='查看=[21-1-10 - 21-1-16]'#figsize(12.5, 4) # 设置 figsize
plt.rcParams['savefig.dpi'] = 300 #图片像素
plt.rcParams['figure.dpi'] = 200 #分辨率
# 默认的像素:[6.0,4.0],分辨率为100,图片尺寸为 600&400
# 指定dpi=200,图片尺寸为 1200*800
# 指定dpi=300,图片尺寸为 1800*1200
# 设置figsize可以在不改变分辨率情况下改变比例
#解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
plt.rcParams['figure.figsize'] = (10.0, 6.0) # 设置figure_size尺寸
font_label = {'family':'SimHei',
'weight' : 'normal',
'size' : 20,
}
y=[1,23,19,2300,3,5,12,2300,19,23,3,500,12]
y2=[2,24,23,3,9,110,13,23,1300,26,3,9,10000]
x=['2021-02-22','2021-03-22','2021-04-22','c','d','e','f','O','j','feb','jan','mar','oct']
plt.title('Keyword Ranking销售排名',fontdict={'size':20},loc='center')
plt.xlabel('X轴',fontdict=font_label)
plt.ylabel('Y轴',fontdict=font_label)
plt.plot(x,y,linewidth=3,color='r',marker='D',markerfacecolor='yellow', markersize=5,linestyle='-',label='Y') #标记线为红色r,标点为大菱形D,风格为虚线
plt.plot(x,y2,color='b',marker='p',linestyle='-',label='Y2')
legend(loc='best',title='Name') #在plot()函数中增加一个参数label,再通过legend()函数显示图例
plt.xticks(rotation=45) #X横坐标倾斜60度
#plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.) #将说明图表放置在图表外# 设置数字标签
for a, b in zip(x, y):plt.text(a, b, b, ha='center', va='top', fontsize=10) #fontsize,style,ha,va参数分别是字号,字体,垂直对齐方式,水平对齐方式
for a, b in zip(x, y2):plt.text(a, b, b, ha='center', va='bottom', fontsize=10)
plt.text(5,500,'相关系数:\n增长幅度:',ha='center', va='top', fontsize=10,color='b') #前面2个参数为x,y对应坐标值ax = plt.gca()
ax.invert_yaxis() #y轴反向
plt.savefig('1.jpg',dpi=100)
#plt.show()
plt.close()# 命名生成的html
GEN_HTML = "test.html"
htmlfile2="test2.html"
# 打开文件,准备写入
f = open(GEN_HTML, 'w',encoding='UTF-8')
f2=open(htmlfile2,'w',encoding='UTF-8')
title="这是产品标题"
body="<p><h1>标题</h1></p>"
html="""
<html><head><title>%s</title></head><body>%s</body
</html>
"""%(title,body)
f2.write(html)
f2.close()
print(f"成功了")
# 准备相关变量
str1 = """
<h1>这是标题</h1>
<a class="a-link-normal s-no-outline" href="/gp/slredirect/picassoRedirect.html/ref=pa_sp_atf_aps_sr_pg1_1?ie=UTF8&adId=A07267723HYUM7A1IS3F4&url=%2FNew-Star-Foodservice-Commercial-Suction%2Fdp%2FB00DVXLML4%2Fref%3Dsr_1_1_sspa%3Fcrid%3D3D71DEYXHO6JB%26dchild%3D1%26keywords%3Dfrench%2Bfry%2Bcutter%26qid%3D1614913550%26sprefix%3Dfrench%2B%252Caps%252C470%26sr%3D8-1-spons%26psc%3D1&qualifier=1614913550&id=5497147329523695&widgetName=sp_atf">
<div class="a-section aok-relative s-image-square-aspect">
<img src="https://m.media-amazon.com/images/I/81OLbMS+cHL._AC_UL320_.jpg" class="s-image" alt="Sponsored Ad - New Star Food Service 42313 Commercial Restaurant French Fry Cutter with Suction Feet, 1/2-Inch" srcset="https://m.media-amazon.com/images/I/81OLbMS+cHL._AC_UL320_.jpg 1x, https://m.media-amazon.com/images/I/81OLbMS+cHL._AC_UL480_FMwebp_QL65_.jpg 1.5x, https://m.media-amazon.com/images/I/81OLbMS+cHL._AC_UL640_FMwebp_QL65_.jpg 2x, https://m.media-amazon.com/images/I/81OLbMS+cHL._AC_UL800_FMwebp_QL65_.jpg 2.5x, https://m.media-amazon.com/images/I/81OLbMS+cHL._AC_UL960_FMwebp_QL65_.jpg 3x" data-image-index="2" data-image-load="" data-image-latency="s-product-image" data-image-source-density="1">
</div>
</a>"""str2 = r'''
<img <img alt="测试图" src="1.jpg"><b>加粗</b>
<div><div><ul><li font="50"> <h1>评论与销售分析</h1></li><li> 评分数相关分析</li></ul><div><table><tr><td> table </td><td bgcolor="#0fff90"> table2 </td></tr></table></div></div
</div>
'''# 写入HTML界面中
message = """
<html>
<head></head>
<body>
<p>%s</p>
<p>%s</p>
</body>
</html>
""" % (str1, str2)# 写入文件
f.write(message)
# 关闭文件
f.close()# 自动调用网络浏览器打开刚才生成的网页文件
webbrowser.open(GEN_HTML, new=0)相关文章:
使用Python自动生成图文并茂的网页分析报告
在数据分析中,不管是市场研究还是科学分析,经常需要使用Python进行数据分析并生成图表报告。一般使用Python生成和展示图表时都是使用matplotlib 库生成静态图片文件,这种方式不便之处是不方便跟动态文字段落结合在一起,也不方便分…...
uniapp 系统学习,从入门到实战(七)—— 网络请求与数据交互
全篇大概 3600 字(含代码),建议阅读时间 25min 📚 目录 使用uni.request发起请求封装全局请求工具破解跨域难题总结 在跨平台应用开发中,网络请求是连接前端与后端服务的核心环节。UniApp 提供了 uni.request 方法处理网络请求,但…...
【项目管理】基于 C 语言的 QQ 聊天室实现(TCP + 多线程 + SQLite3)
基于 C 语言的 QQ 聊天室(TCP + 多线程 + SQLite3) 项目功能基础功能: 登录、注册、添加好友、私聊、创建群聊、群聊扩展功能: 删除好友、注销账号、好友在线状态、群管理(拉人/踢人)、VIP 特权、邮件通知等 功能介绍:模拟QQ聊天客户端:登录界面:1、登录2、注册 //将用…...
力扣27.移除元素(双指针)
题目看起来很乱,实际上意思是:把数组中值不等于val的元素放在下标为0,1,2,3......,并且返回数组中值不等于val的元素的个数 方法一:直接判断覆盖 class Solution { public:int removeElement(vector<int>& nums, int…...
VADv2: 基于矢量表征和概率规划的E2E架构
1. 写在前面 今天分享一篇自动驾驶领域的论文VADv2(End-to-End Vectorized Autonomous Driving via Probabilistic Planning), 基于矢量表征和概率规划的E2E架构,2024年2月份华中科技大和地平线合作的一篇文章, 在经典的端到端模型架构上作出了基于概率规划去输出规划轨迹的…...
机器学习:强化学习的epsilon贪心算法
强化学习(Reinforcement Learning, RL)是一种机器学习方法,旨在通过与环境交互,使智能体(Agent)学习如何采取最优行动,以最大化某种累积奖励。它与监督学习和无监督学习不同,强调试错…...
授权与认证之jwt(一)创建Jwt工具类
JWT的Token要经过加密才能返回给客户端,包括客户端上传的Tokn,后端项目需要验证核 实。于是我们需要一个WT工具类,用来加密Token和验证Token的有效性。 一、导入依赖 <dependency><groupId>com.auth0</groupId><artifactId>jav…...
计算机毕业设计SpringBoot+Vue.js基于JAVA语言的在线考试与学习交流网页平台(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
Difyにboto3を変更したカスタムDockerイメージの構築手順
Difyにboto3を変更したカスタムDockerイメージの構築手順 はじめに1. Dockerfileの作成2. Dockerイメージのビルド3. docker-compose.yamlの更新変更点: 4. コンテナの再起動注意事項まとめ はじめに DifyのDockerイメージに特定バージョンのboto3を変更する手順を…...
uniapp 中引入使用uView UI
文章目录 一、前言:选择 uView UI的原因二、完整引入步骤1. 安装 uView UI2. 配置全局样式变量(关键!)3. 在 pages.json中添加:4. 全局注册组件5. 直接使用组件 五、自定义主题色(秒换皮肤) 一、…...
数据图表ScottPlot.WPF用法示例
目录 一、添加 NuGet 程序包(5.0.47) 二、MainWindow.xaml中添加引用 三、MainWindow.xaml.cs 具体使用代码 图表示例: 一、添加 NuGet 程序包(5.0.47) 二、MainWindow.xaml中添加引用 <Window x:Class"…...
js加密之延伸requestAnimationFrame
简言 上篇文章有提到requestAnimationFrame,只是随笔带过。这篇文章就着重研究一下requestAnimationFrame的运用,以及实际作用。还有关于在js加密技术中的落地实现可行性。 功能说明 小声说一下,做开发的同学一定要学会翻官方文档,我这里直接引用一段官方介绍。 …...
系统架构设计师—计算机基础篇—存储管理
文章目录 基本概念地址重定位 存储管理方案分区存储管理分页存储管理做题的方法地址重定位淘汰页号 分段存储管理段页式存储管理虚拟存储管理 基本概念 地址重定位 地址重定位是指将程序中的虚拟地址(逻辑地址)变换称内存的真实地址(物理地…...
【第二十五周】:DeepPose:通过深度神经网络实现人体姿态估计
DeepPose 摘要Abstract文章信息引言DeepPose归一化网络结构初始网络(粗略估计所有关节点位置)精细化级联网络(分别修正每个关节点的位置) 疑问与解决代码实践总结 摘要 这篇博客介绍了DeepPose,这是首个基于深度神经网…...
SVN 简介
SVN 简介 引言 版本控制系统(Version Control System,VCS)是软件开发过程中不可或缺的工具之一。它能够帮助开发者管理代码的版本,追踪代码变更,协同工作,以及确保代码的稳定性和安全性。Subversion(简称SVN)是一种流行的版本控制系统,本文将为您详细介绍SVN的基本概…...
ARM Linux LCD上实时预览摄像头画面
文章目录 1、前言2、环境介绍3、步骤4、应用程序编写4.1、lcd初始化4.2、摄像头初始化4.3、jpeg解码4.4、开启摄像头4.5、完整的程序如下 5、测试5.1、编译应用程序5.2、运行应用程序 6、总结 1、前言 本次应用程序主要针对支持MJPEG格式输出的UVC摄像头。 2、环境介绍 rk35…...
基于DeepSeek 的图生文最新算法 VLM-R1
目录 一、算法介绍 二 算法部署 三 模型下载 四 算法测试 五 可视化脚本 一、算法介绍 VLM-R1:稳定且可通用的 R1 风格大型视觉语言模型 自从 Deepseek-R1 推出以来,出现了许多专注于复制和改进它的作品。在这个项目中,我们提出了 VLM-R1,一种稳定且可通用的 R1 风格…...
《论软件测试中缺陷管理及其应用》审题技巧 - 系统架构设计师
论软件测试中缺陷管理及其应用写作框架 一、考点概述 本论题“论软件测试中缺陷管理及其应用”主要考查的是软件测试领域中的缺陷管理相关知识与实践应用。论题涵盖了以下几个核心内容: 首先,需要理解软件缺陷的基本概念,即软件中存在的破坏正常运行能力的问题、错误或隐…...
MacOS本地部署Deepseek,不联网也可以使用AI,保护隐私
苹果笔记本本地部署deepseek主要用到Ollama与open-webui 1. 安装Ollama “Ollama” 是一个轻量级的 AI 模型运行时环境(runtime),旨在简化在本地部署和使用大语言模型(LLM)的过程。它由 Vicarious 公司开发ÿ…...
python爬虫:pyspider的详细使用
文章目录 一、pyspider介绍1.1 核心概念1.2 与其他爬虫框架的比较二、 安装 pyspider三、编写爬虫脚本四、运行和监控爬虫4.1 启动爬虫4.2 监控任务状态4.3 任务管理五、高级功能5.1 分布式爬取5.2 JavaScript 渲染5.3 数据存储5.4 定时任务5.5 错误处理和重试机制六、示例:采…...
3-5 WPS JS宏 工作表的移动与复制学习笔记
************************************************************************************************************** 点击进入 -我要自学网-国内领先的专业视频教程学习网站 *******************************************************************************************…...
Sqlserver安全篇之_启用TLS即配置SQL Server 数据库引擎以加密连接
官方文档 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-sql-server-encryption?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/manage-certificates?viewsql-server-ver15&pre…...
删除变慢问题
问题: 有一个场景,每天都会删除数据,SQL为delete from xxx where record_date < DATE_SUB(now(), INTERVAL ? DAY) limit 1000 ,一直循环执行,当执行到最后一次满足条件的时候,就会很慢 原理分析 索引与…...
创建一个MCP服务器,并在Cline中使用,增强自定义功能。
MCP介绍 MCP 是一个开放协议,它标准化了应用程序如何向LLMs提供上下文。可以将 MCP 视为 AI 应用程序的 USB-C 端口。正如 USB-C 提供了一种标准化的方法来将您的设备连接到各种外围设备和配件一样,MCP 提供了一种标准化的方法来将 AI 模型连接到不同的…...
游戏引擎学习第131天
仓库:https://gitee.com/mrxiao_com/2d_game_3 运行游戏并识别我们的小问题 今天的工作重点是对游戏引擎进行架构优化,特别是针对渲染和多线程的部分。目前,我们的目标是让地面块在独立线程上进行渲染,以提高性能。在此过程中,我…...
人大金仓国产数据库与PostgreSQL
一、简介 在前面项目中,我们使用若依前后端分离整合人大金仓,在后续开发过程中,我们经常因为各种”不适配“问题,但可以感觉得到大部分问题,将人大金仓视为postgreSQL就能去解决大部分问题。据了解,Kingba…...
《认知·策略·跃迁:新能源汽车工程师的深度学习系统构建指南》
--- ## 前言:为什么传统学习法正在杀死你的竞争力? 在新能源汽车领域,我们正经历着每18个月知识体系更新迭代的指数级变革。当磷酸铁锂电池能量密度刚突破200Wh/kg时,固态电池已进入量产倒计时;当自动驾驶还在L2级徘…...
存贮论模型案例与Matlab实现
摘要:本文结合存贮论确定性模型,详细解析经济订购批量(EOQ)、允许缺货生产批量等核心模型,并通过商品库存管理、生产计划等实际案例,配合Matlab代码实现,展示模型求解过程。涵盖公式推导、参数优…...
MacBook Pro使用FFmpeg捕获摄像头与麦克风推流音视频
FFmpeg查看macos系统音视频设备列表 ffmpeg -f avfoundation -list_devices true -i "" 使用摄像头及麦克风同时推送音频及视频流: ffmpeg -f avfoundation -pixel_format yuyv422 -framerate 30 -i "0:1" -c:v libx264 -preset ultrafast -b:v 1000k -…...
linux 内核dumpstack定位使用举例说明
1,在 Linux 内核中,当你需要定位问题时,dump_stack() 函数是一个非常有用的工具,那么什么时候使用dump_stack,怎么使用dump_stack呢 通常使用的是前者)函数通常在以下情况下被用来帮助定位问题: 调试内核代…...
