当前位置: 首页 > news >正文

Matplotlib 绘制基本的图表

# 导入包
import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] # 用来显示中文
plt.rcParams['axes.unicode_minus'] = False # 显示负坐标轴# 读取源数据,后续大部分数据基于词文件的数据,需要对金额进行一些简单的处理
file_path = r"D:\data\datasource\data_wuliu.csv"
df1 = pd.read_csv(file_path,parse_dates=['销售时间','交货时间'],encoding='gbk')# 因销售金额单位的问题,对销售金额列进行处理
# replace ',' with '.'  并将格式转换为float;如果是万元 *10000
def data_deal(number):if number.find('万元') !=-1:num1 = float(number[:number.find('万元')].replace(',',''))*10000else: #找到带元的,删除元,replace ',' with '.' num1 = float(number[:number.find('元')].replace(',',''))return num1
df1['销售金额'] = df1['销售金额'].map(data_deal)# 1: 柱形图
# 准备数据,月销售额
df_month = df1.groupby(df1.销售时间.dt.month)['销售金额'].sum().reset_index()# 画图
plt.bar(df_month.销售时间,df_month['销售金额'],label='销售金额')
plt.legend(loc = 'upper right') # 显示图例
plt.xlabel('月份') # 设置行坐标轴
plt.ylabel('销量') # 设置列坐标轴
plt.xticks(df_month.销售时间 , rotation=45) # 设置x刻度倾斜45度
plt.ylim(0,100000000) #设置坐标轴长度plt.title('月度销售额',fontsize=16,fontweight='bold') # 设置图标的标题

# 2: 条形图
plt.bar(x=0, bottom=df_month.销售时间, height=0.5, width=df_month.销售金额, orientation='horizontal',color='GREEN')
plt.xlabel('销量')
plt.ylabel('月份')

# 分组柱形图: 不同月份中 , 拒货,返修,质量合格的产品数量
# 准备数据 
df_pivot = pd.pivot_table(df1,values='订单号',index= df1.销售时间.dt.month,aggfunc = 'count',columns = '货品用户反馈').reset_index()# 画图
bar1 = plt.bar(x=df_pivot.销售时间-0.2, height=df_pivot.拒货, color='blue', width=0.2,label='拒货',alpha = 0.5) # alpha 设置透明度
bar2 = plt.bar(x=df_pivot.销售时间,height = df_pivot.质量合格, color='green',width=0.2,label='质量合格',alpha = 0.5)
bar3 = plt.bar(x=df_pivot.销售时间+0.2,height = df_pivot.返修, color='red',width=0.2,label='返修',alpha = 0.5)
plt.legend()# 添加数据标注, 
plt.bar_label(bar1)
plt.bar_label(bar2)
plt.bar_label(bar3)

# 堆积柱形图: 不同月份拒货,返修,质量合格的产品数量
bar1 = plt.bar(np.arange(6),df_pivot.拒货,color='red',label='拒货',width=0.5,alpha=0.5)
bar2 =plt.bar(np.arange(6),df_pivot.质量合格,color='blue',label='质量合格',bottom=df_pivot.拒货,width=0.5,alpha=0.5)
bar3 =plt.bar(np.arange(6),df_pivot.返修,color='green',label='返修',bottom=df_pivot.质量合格+df_pivot.拒货,width=0.5,alpha=0.5)plt.bar_label(bar1,color='white')
plt.bar_label(bar2,color='white')
plt.bar_label(bar3)
# 设置x轴标签
plt.xticks(np.arange(6),df_pivot.销售时间)
plt.ylim(0,400) # 修改刻度
plt.legend(loc='upper right',ncol=3) # 显示图例

# 5: 堆积条形图
bar1 = plt.bar(x=0,bottom=df_pivot.销售时间,height=0.5, width=df_pivot.拒货, orientation='horizontal',color='GREEN',alpha=0.6)
bar2 = plt.bar(x=df_pivot.拒货,bottom=df_pivot.销售时间,height=0.5, width=df_pivot.质量合格, orientation='horizontal',color='red',alpha=0.6)
bar3 = plt.bar(x=df_pivot.拒货+df_pivot.质量合格,bottom=df_pivot.销售时间,height=0.5, width=df_pivot.返修, orientation='horizontal',color='blue',alpha=0.6)plt.bar_label(bar1)
plt.bar_label(bar2)
plt.bar_label(bar3)

# 6: 饼图: 不同月份拒货,返修的占比,
# 参数 autopct 显示百分比
# explode : 设置炸裂效果,
# startangle=90  : 设置开始画图的角度
# wedgeprops=dict(width=0.4,edgecolor='blue') 设置width 则会生成圆环图,edgecolor='blue' 边线的颜色plt.figure(figsize=(6,6)) # 设置画布的大小
plt.pie(x=df_pivot.拒货,labels=tuple(df_pivot.销售时间), explode=(0,0.2,0,0,0,0),autopct='%.2f%%',startangle=90,wedgeprops=dict(width=0.4,edgecolor='blue'))
# plt.pie(x=df_pivot.返修,radius=0.5)
# plt.pie(x=df_pivot.拒货,radius=0.5,colors=['white','white','white','white','white','white'],startangle=90,)
plt.legend()
# plt.savefig(r'c:/test.png',dpi=500) # dpi 用来设置像素

# 7: 折线图
plt.figure(figsize=(10,6))
plt.plot(df_pivot.销售时间,df_pivot.拒货,color='r',marker='.',ms=5,label='拒货')
plt.plot(df_pivot.销售时间,df_pivot.返修,color='b',marker='.',ms=5,label='返修')# 添加数据标签
for x,y in zip(df_pivot.销售时间,df_pivot.拒货):plt.text(x, y+0.5 ,str(y))
for x,y in zip(df_pivot.销售时间,df_pivot.返修):plt.text(x, y+0.5 ,str(y))
plt.legend() # 显示图例
plt.title('月度趋势图',fontsize=14)# 添加标题

# 当需要在同一个画图上添加多个子图时,方法如下:
# 画布和子图 方法1
fig = plt.figure(figsize=(12,8),dpi=300,facecolor='white') # 设置画布 facecolor 设置画布背景色# 添加图1:
figure1 = fig.add_subplot(221)
plt.plot(df_pivot.销售时间,df_pivot.拒货,marker='.',label='拒货')# 添加图2:柱形图,并添加均值线
figure2 = fig.add_subplot(222)
plt.bar(df_pivot.销售时间, df_pivot.拒货,label='拒货')
mean_num = np.mean(df_pivot.拒货)
plt.axhline(y=mean_num,color='r', linestyle=':')# 添加图3:饼图
figure3 = fig.add_subplot(223)
plt.pie(x=df_pivot.拒货,labels=tuple(df_pivot.销售时间), explode=(0,0.2,0,0,0,0),autopct='%.2f%%',startangle=90)# 添加图4:堆积柱形图
figure4 = fig.add_subplot(224)
bar1 = plt.bar(np.arange(6),df_pivot.拒货,color='red',label='拒货',width=0.5)
bar2 =plt.bar(np.arange(6),df_pivot.质量合格,color='blue',label='质量合格',bottom=df_pivot.拒货,width=0.5)
bar3 =plt.bar(np.arange(6),df_pivot.返修,color='green',label='返修',bottom=df_pivot.质量合格+df_pivot.拒货,width=0.5)
#显示数据标签
plt.bar_label(bar1,color='white')
plt.bar_label(bar2,color='white')
plt.bar_label(bar3)

# 画布和子图 方法2
fig,ax = plt.subplots(2,2,figsize=(12,8))fig1 = ax[0,0]
fig2 = ax[0,1]
fig3 = ax[1,0]
fig4 = ax[1,1]fig1.bar(df_pivot.销售时间,df_pivot.拒货)
fig2.pie(x=df_pivot.拒货,labels=tuple(df_pivot.销售时间))
fig3.plot(df_pivot.销售时间,df_pivot.拒货,marker='.')

# 大图与子区域
# 设置大图
fig = plt.figure() 
left,bottom,width,height = 0.1,0.1,0.8,0.8 # 设置图距离画布边缘的距离
fig1 = fig.add_axes([left,bottom,width,height ])
fig1.bar(df_pivot.销售时间,df_pivot.拒货)
fig1.set_title('拒货分布')# 设置子图设置位置参数
left,bottom,width,height = 0.65,0.65,0.25,0.2
fig2 = fig.add_subplot([left,bottom,width,height ])
fig2.plot(df_pivot.销售时间,df_pivot.拒货,marker='.')
fig2.set_title('趋势图')

# 8: 折线图与柱形图组合图: 不同月份的拒货数量,以及拒货占比
# 准备数据
df_pivot['拒货比'] = df_pivot['拒货']/(df_pivot['拒货']+df_pivot['质量合格']+df_pivot['返修'])fig = plt.figure() # 画布
fig1 = fig.add_subplot(111) # 添加子图
fig1.bar(df_pivot.销售时间,df_pivot.拒货,label ='拒货')
fig1.set_ylim(0,50)
fig1.legend(loc = 'upper left')import matplotlib.ticker as ticker # 用来设置轴标签百分比
fig2=fig1.twinx() # 图2共享图1x轴
fig2.plot(df_pivot.销售时间,df_pivot.拒货比,marker='*', c='r',label='拒货比')
# 设置百分比
pct = ticker.PercentFormatter(1,2) # 0.3设定到30%, 2 代表小数保留2位
fig2.yaxis.set_major_formatter(pct)
fig2.set_ylim(0,0.5)
for x,y in zip(df_pivot.销售时间,df_pivot.拒货比):plt.text(x,y,str(round(y*100,2))+'%')
fig2.legend()

# 9: 散点图
plt.scatter(df1.数量,df1.销售金额,c='b',marker='o',alpha=0.6,linewidths=2)

# 10: 直方图
plt.hist(df1.销售金额, bins=50, edgecolor='w')

#  11: 面积图:先化折线图,再填充plt.plot(df_pivot.销售时间, df_pivot.拒货)
plt.plot(df_pivot.销售时间, df_pivot.质量合格)plt.fill_between(df_pivot.销售时间,0,df_pivot.拒货,facecolor='r',alpha=0.3)
plt.fill_between(df_pivot.销售时间,df_pivot.拒货,df_pivot.质量合格,facecolor='g',alpha=0.3)

# 12: 雷达图 
#  np.pi 是180°#准备数据
df= pd.DataFrame({'name':['A01','A01','A01','A01','A01','A02','A02','A02','A02','A02'],'course':['数学','语文','英语','物理','化学','数学','语文','英语','物理','化学'],'grade':[75,40,79,91,55,57,68,36,89,70]})
df.set_index('name',inplace=True)
query1 = "name=='A01'"
query2 = "name=='A02'"
A01 = df.query(query1)['grade']
# 创建角度
polar_angle = np.linspace(0,2*np.pi,len(A01),endpoint=False)
polar_angle = np.concatenate((polar_angle,[polar_angle[0]])) # 角度数据也需要首尾相连
A01 = np.concatenate((A01,[A01[0]])) # 雷达图需要首尾连接,所以第一个数据需要重复
A02 = df.query(query2)['grade']
A02 = np.concatenate((A02,[A02[0]])) 
course = df.query(query1)['course'] 
course = np.concatenate((course,[course[0]])) 
plt.style.use("ggplot") # 设置画布的样式, 
# 可以使用如下代码查看现有的画图样式,类似于PBI 的风格设置,尝试不同样式的效果,选择合适的。
#print(plt.style.available)fig = plt.figure() # 设置画布
fig1 = fig.add_subplot(111,polar =True)
fig1.plot(polar_angle,A01,'o-',label='A01')
fig1.plot(polar_angle,A02,'o-',label='A02')fig1.fill(polar_angle,A01,'r',alpha=0.25) # 填充颜色
fig1.fill(polar_angle,A02,'b',alpha=0.25)
plt.legend()
fig1.set_thetagrids(polar_angle*180/np.pi,course)

# 13: 瀑布图
# 准备数据
df = pd.DataFrame({'dt':['2020-1-01','2020-1-02','2020-1-03','2020-1-04','2020-1-05','2020-1-06','2020-1-07','2020-1-08'],'amount':[21,18,-10,19,16,-12,13,16]})plt.style.use('ggplot')
# : x 轴先以index 的方式进行,最后替换为日期
xax = np.arange(len(df.amount))
# print(xax)
height = 0 
for i in df.amount.index:x = xax[i]y = df.amount[i]if y >=0:plt.bar(x,y,0.8,align='center',bottom=height,label='盈利',color='r' )else:plt.bar(x,y,0.8,align='center',bottom=height,label='亏损',color='g' )# 调整柱形图的高度height = height + y # 调整x轴的位置x = x + 0.8 
plt.gca().yaxis.grid(True,linestyle='--',alpha=0.25,color='grey')
plt.gca().xaxis.grid(False)
plt.xticks(np.arange(len(df['dt'])),df.dt,rotation=45) # 将x 轴坐标替换为日期

# 14 : 玫瑰图
# create 样本数据
name = list('ABCDEFGHIJKLMNOPQRST')
amount = [805,892,773,744,692,623,605,598,586,585,575,573,562,500,494,469,396,373,357,323]
df1 = pd.DataFrame({'name':name,'amount':amount})
# 数据重新排序后必须重置索引,否则下面的数据拼接就会出错,因为基于的是index 
df = df1.sort_values('amount',ascending=False).reset_index()angle =np.linspace(0,2*np.pi,len(df.amount),endpoint=False)
fig=plt.axes(polar=True) # 实例化极坐标系
# 图.set_theta_direction(-1) # 顺时针为极坐标正方向
fig.set_theta_zero_location('N') # 让0度指向N
color =['b','gold','darkviolet','turquoise','r','g','grey','c','m','y','k','darkorange','lightgreen','plum','tan']# 因为图形需要首位相连,所以需要对数据进行处理
amount = np.concatenate((df.amount,[df.amount[0]]))
angle = np.concatenate((angle,[angle[0]]))
name = np.concatenate((df.name,[df.name[0]]))
plt.bar(angle,amount,width=0.33,color=color)
plt.bar(x=angle, height=130, width=0.33, color='white')  # 挖孔
# 数据标签
for angle, amount, name in zip(angle, amount, name):plt.text(angle+0.03, amount+100, str(name) )
plt.gca().set_axis_off() # 不显示坐标轴

# 添加辅助线及填充
plt.axhline(y=0.2,linewidth = 2, c='g')
plt.axvline(x=0.2,linewidth = 2, c='g')# 画线段
plt.axhline(y=0.5,xmin=0.2,xmax=0.7,linewidth = 2, c='r')# 在指定位置填充,1,1.3 分别代表y轴坐标
plt.axhspan(1,1.3,facecolor='g')
# 在指定位置填充,1,1.3 分别代表x轴坐标
plt.axvspan(2,2.3,facecolor='r',alpha=0.3)# 例子:添加平均线及文本注释
plt.bar(df_pivot.销售时间, df_pivot.拒货,label='拒货',facecolor='g')# add 平均线
mean_num = np.mean(df_pivot.拒货)
plt.axhline(y=mean_num,color='r', linestyle=':') # linestyle 用来设置线形# 添加文本注释
# para:xy:用来指定x,y轴的位置
# shrink: 箭头的长度
# arrowprops: 设置箭头的颜色,样式大小等
plt.annotate("均值线",xy=(9,mean_num+5),arrowprops=dict(facecolor='r', shrink=0.05,headlength=100, width=5, headwidth=10,edgecolor='green',linestyle='--',linewidth=1))

常用的标记marker:

相关文章:

Matplotlib 绘制基本的图表

# 导入包 import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.rcParams[font.sans-serif][SimHei] # 用来显示中文 plt.rcParams[axes.unicode_minus] False # 显示负坐标轴# 读取源数据,后续大部分数据基于词文件的数据,需…...

【JavaScript】异步解决方案的发展历程

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…...

前端性能优化三十四:花裤衩模板引入打包分析工具

测量各个插件和loader所花费的时间 (1). install: yarn add speed-measure-webpack-plugin -D(2). Vue-cli 3.x设置: const SpeedMeasurePlugin require(speed-measure-webpack-plugin) const smp new SpeedMeasurePlugin({outputFormat: human }) // 包裹configureWebpac…...

求职小程序列表基础配置-移动端通用列表模块配置教程(1)

求职小程序列表基础配置-移动端通用列表模块配置教程(1) 移动端通用列表页开发指南 准备工作 注册多八多AIIDE账号: 访问多八多AIIDE官网并注册新账号。完成邮箱和手机号的验证。 创建移动应用: 登录后,在工作台新建一个移动应用。填写应用名称,选择“…...

牛客设计模式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:…...

从零构建tomcat环境

一、官网构建 1.1 下载 一般来说对于开源软件都有自己的官方网站,并且会附上使用文档以及一些特性和二次构建的方法,那么我们首先的话需要从官网或者tomcat上下载到我们需要的源码包。下载地址:官网、Github。 这里需要声明一下&#xff…...

MySQL递归公用表表达式

😇作者介绍:一个有梦想、有理想、有目标的,且渴望能够学有所成的追梦人。 🎆学习格言:不读书的人,思想就会停止。——狄德罗 ⛪️个人主页:进入博主主页 🗼专栏系列:MySQL知识 &…...

深入 K8s 网络原理(一)- Flannel VXLAN 模式分析

1. 概述 这周集中聊下 K8s 的集群网络原理,我初步考虑分成3个方向: Pod-to-Pod 通信(同节点 or 跨节点),以 Flannel VXLAN 模式为例; Pod/External-to-Service 通信,以 iptables 实现为例&…...

fpga 8段4位数码管verilator模拟

8段4位数码管verilator模拟 seg.v module seg(input wire clk,input wire rst_n,output wire[7:0] SEG,output wire[3:0] SEL );reg[7:0] digit[0:15] {8h3f, 8h06, 8h5b, 8h4f, 8h66, 8h6d, 8h7d,8h07,8h7f,8h6f, 8h77, 8h7c, 8h39, 8h5e, 8h79, 8h71};reg[31:0] cnt 32…...

HttpURLConnection发送各种内容格式

通过java.net.HttpURLConnection类实现http post发送Content-Type为multipart/form-data的请求。 json处理使用com.fasterxml.jackson 图片压缩使用net.coobird.thumbnailator log使用org.slf4j 一些静态变量 private static final Charset charset StandardCharsets.UTF_8;…...

摇杆控制人物移动

摇杆控制人物移动 一、UI搭建二、3d模型搭建三、脚本JoyStickBar.csPlayerController.cs 工程在我资源里名字叫Joystickbar.unitypackage [连接](https://download.csdn.net/download/qq_42194657/12043019?spm1001.2014.3001.5503) 一、UI搭建 JoyStickBar是图片背景 JoySt…...

Jenkins自动化部署之后端

准备工作参考本人另外几篇Jenkins相关的文章 新建任务 添加参数配置 字符串参数:分支名称 多选框:项目名称(Extended Choice Parameter插件必备,插件安装参考我另外的文章) 这个分割规则自定义。只要根据Jenkins…...

Could not resolve com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.28.

1、首先进入阿里云maven仓库,在搜索栏输入无法下载的依赖名称,查询现有版本号,可以看到这里有2.9.34。 2、在build.gradle(Project)的buildscript闭包下替换为阿里云maven仓库: maven { url https://www.jitpack.io } maven { u…...

RK3588平台开发系列讲解(AI 篇)RKNN rknn_query函数详细说明

文章目录 一、查询 SDK 版本二、查询输入输出 tensor 个数三、查询输入 tensor 属性(用于通用 API 接口)四、查询输出 tensor 属性(用于通用 API 接口)五、查询模型推理的逐层耗时六、查询模型推理的总耗时七、查询模型的内存占用情况八、查询模型里用户自定义字符串九、查询原…...

15个主流设计灵感网站,激发你的创作灵感!

即时设计 即时设计是一种强大的云设计工具,已成为许多设计师、产品经理和开发人员的首选工具之一。即时设计用户可以使用内置的工具和功能快速创建和编辑设计,或与其他用户共享和合作。此外,即时设计还有一个丰富的资源社区,为用…...

Matlab:解非线性方程组

1、基于问题求解非线性方程组 例: xoptimvar(x,2); %将x定义为一个二元素优化变量 eq1exp(-exp(-(x(1)x(2))))x(2)*(1x(1)^2); %创建第一个方程作为优化等式表达式 eq2x(1)*cos(x(2))x(2)*sin(x(1))1/2; %创建第二个方程作为优化等式表达式 probe…...

面向 AI,重塑云基础设施、存储、芯片、Serverless……2023亚马逊云科技re:Invent中国行

一年一度亚马逊云科技重要的技术盛会 re:Invent 刚落下帷幕,2023 亚马逊云科技 re:Invent 中国行就将其中重要的信息与内容带给了中国市场和用户。作为全球的云计算巨头,今年亚马逊云科技可以说全面加码 AI,例如发布完整的端到端生成式 AI 技…...

【JDK新特性】JDK和Springboot各版本新特性介绍

目录 参考资料 以下是一些较新版本的JDK的主要新特性介绍: JDK 8: Lambda 表达式:引入了函数式编程的概念,使得代码更简洁、可读性更强。Stream API:提供了一种高效处理集合数据的方式,支持并行处理。默认…...

tomcat剖析:开篇

一、简介 本专栏为解析tomcat的专栏,用于一步步的从构建到执行,再到剖析tomcat的内部构造,然后再加上自己的理解,从0到1去认识我们日常开发中不可或缺的web容器,希望对之后的软件设计能够有所启示。 二、步骤 2.1构…...

华为路由器:DHCP配置

在大型企业网络中,会有大量的主机获取IP地址等网络参数。如果采用手工配置,则工作量大不好管理,若用户擅自更改网络参数,则容易导致IP冲突。 因此使用动态主机配置协议(DHCP)可以减少管理员的工作量&#x…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

微信小程序之bind和catch

这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

网页端 js 读取发票里的二维码信息(图片和PDF格式)

起因 为了实现在报销流程中&#xff0c;发票不能重用的限制&#xff0c;发票上传后&#xff0c;希望能读出发票号&#xff0c;并记录发票号已用&#xff0c;下次不再可用于报销。 基于上面的需求&#xff0c;研究了OCR 的方式和读PDF的方式&#xff0c;实际是可行的&#xff…...