Python数据可视化工具——Matplotlib

news2024/11/24 5:29:56

目录

  • 1 基础准备
    • 1.1简介
    • 1.2安装
    • 1.3 绘图基础知识
    • 1.4 查询matplotlib系统中文字体
  • 2 绘图流程
    • 2.1 简单绘图
    • 2.2 标准绘图
    • 2.3 绘制子图
      • 2.3.1 add_subplot方法
        • 两行一列子图 plt1.add_subplot(2,1,*)
        • 一行两列子图 plt1.add_subplot(1,2,*)
      • 2.3.2 plt.subplot()方法
    • 2.4 添加文字说明或注释
  • 3 常用图表
    • 3.1 散点图
    • 3.2 饼图
    • 3.3 柱状图
    • 3.4 条形图
    • 3.5 直方图
    • 3.6 箱线图

1 基础准备

1.1简介

Matplotlib是Python最著名的绘图库,它提供了一套和matlab相似的命令API,十分适合交互式地进行绘图,而且可以方便地将它作为绘图控件,嵌入GUI应用程序中。
官方文档:https://matplotlib.org/

1.2安装

pip install matplotlib   # 使用pip包管理器安装

1.3 绘图基础知识

  • figure,画纸Sublpot画质,可多图绘画
  • title,标题,用来给图形起名字
  • Axis,坐标轴.横轴叫x坐标轴(xlabel),纵轴叫y坐标轴(ylabel)
  • Legend,图例,代表图形里的内容
  • Grid,网格,图形中的虚线,True显示网格
  • Markers,点 ,表示点的形状。

1.4 查询matplotlib系统中文字体

# 查询matplotlib系统中文字体
from matplotlib.font_manager import fontManager
import os
 #fontManager 是一个字体管理器对象,ttflist 是该对象的一个属性,表示已安装的字体列表。
 #st_size>1e6:选出文件大小大于1MB(1e6字节)的字体文件
fonts = [font.name for font in fontManager.ttflist if 
         os.path.exists(font.fname) and os.stat(font.fname).st_size>1e6] 
 
for font in fonts:
    print(font)

在这里插入图片描述

2 绘图流程

在这里插入图片描述

2.1 简单绘图

简单绘图可以不创建绘图对象直接调用plot函数绘图,会自动创建一个绘图对象

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['axes.unicode_minus'] = False   #解决坐标轴刻度负号乱码
plt.rcParams['font.sans-serif'] = ['Simhei']  #设置中文显示,字体为黑体

#绘制一个y=x^2曲线
x =np.arange(1,100,0.25)
plt.plot(x,x**2) #划线,连线
plt.show()  #显示

在这里插入图片描述

2.2 标准绘图

#绘图数据
x = np.linspace(-2,10,100)#等差数组
y = np.sin(x)
z = np.cos(x)

#绘图设置
plt.figure(figsize=(6,4),dpi = 100) #设置画布,figsize=(6,4)画布尺寸:宽度和高度,dpi 每英寸像素
plt.title("正弦", color = 'r', fontsize = 20, rotation = 0, alpha = 1) #添加标题,rotation角度
plt.xlabel("x",fontsize = 15,color = 'r',rotation = 0 ) #添加x轴名称
plt.ylabel("y")#设置y轴名称
plt.xlim(-2,11) #显示出来的x轴的取值范围
plt.ylim(-1.5,1.5)
# plt.xticks([]) #不显示刻度
plt.xticks(np.arange(-2,12,2),fontsize = 15,rotation = -30) #规定x轴刻度
plt.yticks([-1.5,-1,-0.5,0,0.5,1,1.5]) #规定y轴刻度


#绘图
plt.plot(x,y,color = 'red',linewidth = 2,label = "$sin(x)$")  #划线,latex形式(论文公式形式)
plt.plot(x,z,'m--',label = "$cos(x^2)$")

#plt.legend(["$sin(x)$","$cos(x^2)$"],loc=3) #若是前面绘图时,label中没有信息,可以将图例信息写到列表中,注意顺序
plt.legend(loc=3) #显示图例,设置图例位置
plt.savefig("one.jpg",dpi = 500,bbox_inches = "tight") #保存
plt.show()  #显示

在这里插入图片描述

2.3 绘制子图

  • 一个绘图对象可以包含多个轴,在Matplotlib中用轴表示一个绘图区域,可以将其理解为子图。
  • 可以调用fig对象的add_subplot方法和plt.subplot()绘制有多个轴的图表
    add_subplo方法:
    将整个绘图区域等分为设定好的行和列个子区域,从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域编号为1。如果numRows,numCols和plotNum这三个数都小于10的话,可以将它们缩写为一个整数,例如add_subplot(232)和add_subplot(2,3,2)是相同的。add_subplot在plotNum指定的区域中创建一个轴对象。如果新创建的轴和之前创建的轴重叠的话,之前的轴将被删除。

2.3.1 add_subplot方法

两行一列子图 plt1.add_subplot(2,1,*)

#绘图数据
x = np.linspace(-2,10,100)#等差数组
y = np.sin(x)
z = np.cos(x)

#绘图设置
p1 = plt.figure(figsize=(6,4),dpi = 100) #设置画布,figsize=(6,4)画布尺寸:宽度和高度,dpi 每英寸像素

#通过画布对象调用添加子图的方法
#第一幅子图
p1.add_subplot(2,1,1)  #创建一个2行1列的子图,并开始绘制第一个子图
plt.title("正弦") #添加标题,rotation角度
plt.xlabel("x") #添加x轴名称
plt.ylabel("y")#设置y轴名称
plt.xlim(-2,11) #显示出来的x轴的取值范围
plt.ylim(-1.5,1.5)
plt.xticks(np.arange(-2,12,2),fontsize = 15,rotation = -30) #规定x轴刻度
plt.yticks([-1.5,-1,-0.5,0,0.5,1,1.5]) #规定y轴刻度
plt.plot(x,y,label = "$sin(x)$",color = 'red',linewidth = 2)  #划线,latex形式
plt.legend(loc='lower left')  #显示图例

plt.subplots_adjust(wspace = 0,hspace = 0.5) #调整子图之间的距离

#第二幅子图
p1.add_subplot(2,1,2)  #创建一个2行1列的子图,并开始绘制第2个子图
plt.title("余弦") #添加标题,rotation角度
plt.xlabel("x") #添加x轴名称
plt.ylabel("y")#设置y轴名称
plt.xlim(-2,11) #显示出来的x轴的取值范围
plt.ylim(-1.5,1.5)
plt.xticks(np.arange(-2,12,2),fontsize = 15) #规定x轴刻度
plt.yticks([-1.5,-1,-0.5,0,0.5,1,1.5]) #规定y轴刻度
plt.plot(x,z,'m--',label = "$cos(x)$",linewidth = 2)  #划线,latex形式
plt.legend(loc='lower left')  #显示图例

plt.show()

在这里插入图片描述

一行两列子图 plt1.add_subplot(1,2,*)

#绘图数据
x = np.linspace(-2,10,1000)#等差数组
y = np.sin(x)
z = np.cos(x)

#绘图设置
p1 = plt.figure(figsize=(6,4),dpi = 100) #设置画布,figsize=(6,4)画布尺寸:宽度和高度,dpi 每英寸像素
p1.add_subplot(1,2,1)  #创建一个2行1列的子图,并开始绘制第一个子图
plt.title("PyPlot First Example 正弦") #添加标题,rotation角度
plt.xlabel("x") #添加x轴名称
plt.ylabel("y")#设置y轴名称
plt.xlim(0,11) #显示出来的x轴的取值范围
plt.ylim(-1.5,1.5)
plt.xticks(np.arange(0,12,2),fontsize = 15) #规定x轴刻度
plt.yticks([-1.5,-1,-0.5,0,0.5,1,1.5]) #规定y轴刻度
plt.plot(x,y,label = "$sin(x)$",color = 'red',linewidth = 2)  #划线,latex形式
plt.legend(loc='lower left')  #显示图例

plt.subplots_adjust(wspace = 1,hspace = 0) #调整子图之间的距离

p1.add_subplot(1,2,2)  #创建一个1行2列的子图,并开始绘制第2个子图
plt.title("PyPlot Second Example 余弦") #添加标题,rotation角度
plt.xlabel("x") #添加x轴名称
plt.ylabel("y")#设置y轴名称
plt.xlim(-2,11) #显示出来的x轴的取值范围
plt.ylim(-1.5,1.5)
plt.xticks(np.arange(-2,12,2),fontsize = 15) #规定x轴刻度
plt.yticks([-1.5,-1,-0.5,0,0.5,1,1.5]) #规定y轴刻度
plt.plot(x,z,'m--',label = "$cos(x)$",linewidth = 2)  #划线,latex形式
plt.legend(loc='lower left')  #显示图例

plt.show()

在这里插入图片描述

2.3.2 plt.subplot()方法

将上述语句中的 p1.add_subplot(1,2,1) 改为 plt.subplot(1,2,1)

#绘图数据
x = np.linspace(-2,10,1000)#等差数组
y = np.sin(x)
z = np.cos(x)

#绘图设置
p1 = plt.figure(figsize=(6,4),dpi = 100) #设置画布,figsize=(6,4)画布尺寸:宽度和高度,dpi 每英寸像素
plt.subplot(1,2,1)  #创建一个2行1列的子图,并开始绘制第一个子图     ———————————————————————————————————————————变化的地方
plt.title("PyPlot First Example 正弦") #添加标题,rotation角度
plt.xlabel("x") #添加x轴名称
plt.ylabel("y")#设置y轴名称
plt.xlim(0,11) #显示出来的x轴的取值范围
plt.ylim(-1.5,1.5)
plt.xticks(np.arange(0,12,2),fontsize = 15) #规定x轴刻度
plt.yticks([-1.5,-1,-0.5,0,0.5,1,1.5]) #规定y轴刻度
plt.plot(x,y,label = "$sin(x)$",color = 'red',linewidth = 2)  #划线,latex形式
plt.legend(loc='lower left')  #显示图例


plt.subplots_adjust(wspace = 1,hspace = 0) #调整子图之间的距离



plt.subplot(1,2,2)  #创建一个1行2列的子图,并开始绘制第2个子图       ———————————————————————————————————————————变化的地方
plt.title("PyPlot Second Example 余弦") #添加标题,rotation角度
plt.xlabel("x") #添加x轴名称
plt.ylabel("y")#设置y轴名称
plt.xlim(-2,11) #显示出来的x轴的取值范围
plt.ylim(-1.5,1.5)
plt.xticks(np.arange(-2,12,2),fontsize = 15) #规定x轴刻度
plt.yticks([-1.5,-1,-0.5,0,0.5,1,1.5]) #规定y轴刻度
plt.plot(x,z,'m--',label = "$cos(x)$",linewidth = 2)  #划线,latex形式
plt.legend(loc='lower left')  #显示图例

plt.show()

在这里插入图片描述

2.4 添加文字说明或注释

plt.annotate 中 xy 点坐标,xytext 注释坐标,arrowprops 箭头形状

#绘图数据
x = np.linspace(0,10,1000)#等差数组
y = np.sin(x)
z = np.cos(x)

#绘图设置
plt.figure(figsize=(8,4),dpi = 100) #设置画布,figsize=(8,4)画布尺寸:宽度和高度,分辨率100*8
plt.title("正弦") #添加标题,rotation角度
plt.xlabel("x") #添加x轴名称
plt.ylabel("y")#设置y轴名称
plt.xlim(-1,11) #显示出来的x轴的取值范围
plt.ylim(-1.2,1.2)
plt.xticks([0,2,4,6,8,10]) #规定x轴刻度
plt.yticks([-1.5,-1,-0.5,0,0.5,1,1.5]) #规定y轴刻度
plt.plot(x,y,label = "$sin(x)$",color = 'red',linewidth = 2)  #划线,latex形式
plt.plot(x,z,'b--',label = "$cos(x)$")
plt.legend(loc='lower left')  #显示图例

plt.text(0,0,'零点',color = 'b',fontsize = 10,rotation = 0) #增加文字说明
plt.annotate('最大值',color = 'r',xy = (1.5,1),xytext = (2,1.5),arrowprops = dict(facecolor = 'r',edgecolor = 'b',width = 1,shrink = 0.02,headlength = 10))
plt.show()

在这里插入图片描述

3 常用图表

这里只讲解部分参数,全部参数含义及使用办法
可参考菜鸟教程https://www.runoob.com/matplotlib/matplotlib-tutorial.html

3.1 散点图

matplotlib.pyplot.scatter(x, y, marker=None, c=None, s=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

参数说明:
x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。
marker:点的样式,默认小圆圈 ‘o’。
c:点的颜色,默认蓝色 ‘b’,也可以是个 RGB 或 RGBA 二维行数组。
s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。
alpha::透明度设置,0-1 之间,默认 None,即不透明。
edgecolors::颜色或颜色序列,默认为 ‘face’,可选值有 ‘face’, ‘none’, None
#绘图数据
x = np.linspace(0,10,100)#等差数组
y = np.sin(x)

#绘图设置
plt.figure(figsize=(8,4),dpi = 100) #设置画布,figsize=(6,4)画布尺寸:宽度和高度,分辨率100*8
plt.title("正弦") #添加标题,rotation角度
plt.xlabel("x") #添加x轴名称
plt.ylabel("y")#设置y轴名称
plt.xlim(-1,11) #显示出来的x轴的取值范围
plt.ylim(-1.2,1.2)
plt.xticks([0,2,4,6,8,10]) #规定x轴刻度
plt.yticks([-1.5,-1,-0.5,0,0.5,1,1.5]) #规定y轴刻度
plt.scatter(x,y,color = 'red',marker = '+',s = 30)  #散点
plt.show()   #显示

在这里插入图片描述

3.2 饼图

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, hold=None, data=None)

参数说明:

x:浮点型数组,表示每个扇形的面积。
explode:数组,表示各个扇形之间的间隔,默认值为0。
labels:列表,各个扇形的标签,默认值为 None。
colors:数组,表示各个扇形的颜色,默认值为 None。
autopct:设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。
textprops :字典类型,默认值为:None。传递给 text 对象的字典参数,用于设置标签(labels)和比例文字的格式。
shadow::布尔值 TrueFalse,设置饼图的阴影,默认为 False,不设置阴影。
plt.figure(figsize=(6,6))
plt.pie(df_mean.loc["第10小学","语文":"英语"]
       ,labels=["语文","数学","英语"]   #各个扇形的标签
       ,autopct="%.2f%%"      #设置饼图内各个扇形百分比显示格式
       ,shadow=True            #设置饼图的阴影
       ,explode=[0.02,0.02,0.05] #各扇形之间的间隔
       , colors = ['r','y','b']  #各扇形的颜色
       ,textprops={'fontsize':14}#设置饼图上字体的大小
       )
plt.title("第十小学学科成绩占比",fontsize=17);
#tilte\label\tickts,有字体大小的参数
plt.show()

在这里插入图片描述

3.3 柱状图

matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', color=None,edgecolor = None, **kwargs)
参数说明:
x:浮点型数组,柱形图的 x 轴数据,可以是一个标量或一个数组。
height:浮点型数组,柱形图的高度,可以是一个标量或一个数组。
width:浮点型数组,柱形图的宽度。
bottom:浮点型数组,底座的 y 坐标,默认 0。
align:柱形图与 x 坐标的对齐方式,‘center’ 以 x 位置为中心,这是默认值。 ‘edge’:将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align=‘edge’。
color:表示柱的填充颜色,可以是一个颜色名称(如 ‘red’、‘blue’)或一个颜色列表。
edgecolor: 边框颜色。
**kwargs::其他参数。

plt.figure(figsize = (6,6),dpi = 100)
X = ['USA','China','India','Japan','Germany']
Y= [15094025,11999967,12399976,4443211,3456789]
plt.bar(X,Y,color = "pink",width = 0.5)
plt.title("测试")
plt.xlabel('counter')
plt.ylabel('GDP')
plt.show()

在这里插入图片描述

3.4 条形图

条形图用长条形表示每一个类别,长条形的长度表示类别的频数,宽度表示类别
在这里插入图片描述

3.5 直方图

直方图是一种统计报告图,形式上也是一个个的长条形,但是直方图用长条形的面积表示频数或者概率,宽度表示组距,高度表示频数/组距。当宽度相同时,一般就用长条形长度表示频数。

matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs)

参数说明:
x:表示要绘制直方图的数据,可以是一个一维数组或列表。
bins:可选参数,表示直方图的箱数。默认为10。
density:可选参数,表示是否将直方图归一化。默认为False,即直方图的高度为每个箱子内的样本数,而不是频率或概率密度。
color:可选参数,表示直方图的颜色。

条形图与直方图区别

区别直方图条形图
横轴数据连续的,是一个范围孤立的,是一个类别
长条形之间没有空隙有空隙
横轴数据一般用长条形面积表示,当宽度相同时用长度表示长条形的长度
plt.figure(figsize = (6,4),dpi = 100)
data = np.random.randn(1000) #随机生成(1000,),服从正态分布的数据
plt.hist(data,bins= 100,density = False,facecolor = "blue",color = "black",alpha = 0.7)
plt.xlabel("区间")
plt.ylabel("频率")
plt.title("直方图")
plt.show()

在这里插入图片描述

在这里插入图片描述

3.6 箱线图

用于显示一组数据分散情况的统计图
由上边缘、下边缘、中位数、上四分位数、下四分位数、异常值构成;
在这里插入图片描述

data = np.random.randn(1000)
plt.boxplot(data,1,'r*',1)  #第一个表示中间是否打开,第二个1表示是横向还是竖向箱线图
plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/796238.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【必看,干货满满】K8S云原生技术小结

Docker容器技术总结: 1、Docker容器部署及常用命令详解 2、Dockerfile使用及案例详解 3、Docker容器数据卷详解 4、Docker网络详解 5、Docker资源配额详解 6、Docker私有仓库Harbor搭建及使用 7、Docker图形化管理工具Protainer搭建 8、Docker配置阿里镜像加速源&am…

最新版本docker 设置国内镜像源 加速办法

解决问题:加速 docker 设置国内镜像源 目录: 国内加速地址 修改方法 国内加速地址 1.Docker中国区官方镜像 https://registry.docker-cn.com 2.网易 http://hub-mirror.c.163.com 3.ustc https://docker.mirrors.ustc.edu.cn 4.中国科技大学 https://docker.mirrors…

【《React Hooks实战》——指导你使用hook开发性能优秀可复用性高的React组件】

使用React Hooks后,你很快就会发现,代码变得更具有组织性且更易于维护。React Hooks是旨在为用户提供跨组件的重用功能和共享功能的JavaScript函数。利用React Hooks, 可以将组件分成多个函数、管理状态和副作用,并且不必声明类即…

生信学院|07月27日《非线性仿真的领头羊之ABAQUS介绍》

课程主题:非线性仿真的领头羊之ABAQUS介绍 课程时间:2023年07月27日 14:00-14:30 主讲人:张明学 生信科技 CAE专家 ABAQUS功能ABAQUS应用Q&A 请安装腾讯会议客户端或APP,微信扫描海报中的二维码报名哦~~~ 或者点击链接报…

用js把地区字符串格式化为省、市、区

用js把地区信息格式化为省、市、详细信息,结果如下 代码如下 formatter("广东省深圳市南山区深南大道10000号") formatter("西藏自治区拉萨市城关区北京中路35号") formatter("四川省阿坝藏族羌族自治州九寨沟县漳扎镇301省道") for…

cass--单选不累加设置

打开软件,在空白处右击--选项--选择,如下: 完成后,点击确定按钮即可。

Vue学习Day3——生命周期\组件化

一、Vue生命周期 Vue生命周期:就是一个Vue实例从创建 到 销毁 的整个过程。 生命周期四个阶段:① 创建 ② 挂载 ③ 更新 ④ 销毁 1.创建阶段:创建响应式数据 2.挂载阶段:渲染模板 3.更新阶段:修改数据,更…

elment-ui的侧边栏 开关及窗口联动

<template><div class"asders"><el-aside width"200px"><div class"boxbody"><div>源码外卖</div><el-switch v-model"isCollapse" :active-value"true" :inactive-value"fals…

【U8+】财务三大UFO报表的勾稽关系

【三大报表】 资产负债表、利润表、现金流量表&#xff0c;称之为企业三大报表&#xff0c;也是最常见、常用的报表。 【勾稽关系】 核对报表的勾稽关系之前&#xff0c;需要保证“资产负债表”平衡&#xff0c;否则无法正确勾稽检查&#xff1b;资产负债表、利润表、现金流量…

护眼台灯哪个牌子好?三款主流品牌横向对比测评

随着暑假的到来&#xff0c;不少家长想添置或者换新的护眼台灯给孩子使用&#xff0c;护眼台灯正是线下一款炙手可热的护眼神器&#xff0c;很多家长纷纷想给自己孩子买一款真正护眼的台灯。不过面对市场上各种品牌和型号的护眼台灯&#xff0c;对于不熟悉或者是第一次购买护眼…

机器学习深度学习——softmax回归的简洁实现

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——softmax回归从零开始实现 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你…

Java并发编程第2讲——线程基础

目录 一、线程简介 1.1 什么是线程 1.2 线程的组成 1.3 线程的特点 1.4 Java的main方法 二、线程的创建与启动 2.1 线程的创建 2.1.1 继承Thread类&#xff08;无返回值&#xff09; 2.1.2 实现Runnable接口&#xff08;无返回值&#xff09; 2.1.3 实现Callable接口…

【Luogu】 P4331 [BalticOI 2004] Sequence 数字序列

题目链接 点击打开链接 题目解法 首先做一个重要的转化&#xff1a;把 b i b_i bi​ 单调上升变为 b i b_i bi​ 单调不降 如何转化&#xff1f;将 a i − i a_i-i ai​−i 变成新的 a i a_i ai​&#xff0c;将 b i − i b_i-i bi​−i 变新的 b i b_i bi​&#xff…

练习时长两年半的双机热备

1.双机热备技术产生的背景 传统的组网方式如下左图所示&#xff0c;内部用户和外部用户的交互报文全部通过防火墙A。如果防火墙A出现故障&#xff0c;内部网络中所有以防火墙A作为默认网关的主机与外部网络之间的通讯将中断&#xff0c;通讯可靠性无法保证。防火墙作为安全设备…

金蝶云星空与旺店通·企业版对接集成物料查询连通创建货品档案(cp_KW货品同步)

金蝶云星空与旺店通企业版对接集成物料查询连通创建货品档案(cp_KW货品同步) 接入系统&#xff1a;金蝶云星空 金蝶K/3Cloud结合当今先进管理理论和数十万家国内客户最佳应用实践&#xff0c;面向事业部制、多地点、多工厂等运营协同与管控型企业及集团公司&#xff0c;提供一个…

前端实现导出excel表格(合并表头)

需求&#xff1a;勾选行导出为excel表格&#xff08;合并表头 &#xff09; 一、安装插件 npm install --save file-saver xlsx运行项目报如下警告的话 运行npm install xlsx0.16.0 --save 来降低版本号&#xff08;最初我安装的版本号是0.18.16的版本&#xff09;再次运行项目…

VS构建项目报错信息及解决办法01

报错信息及解决1&#xff1a; 报错信息详情&#xff1a;1>MSVCRT.lib(exe_winmain.obj) : error LNK2019: 无法解析的外部符号 _WinMain16&#xff0c;该符号在函数 "int cdecl scrt_common_main_seh(void)" (?__scrt_common_main_sehYAHXZ) 中被引用 原因&…

SAP RFC介绍(sRFC/aRFC/tRFC/qRFC/pRFC)

异步RFC&#xff1a; aRFC后缀&#xff1a; STARTING NEW TASK CALL FUNCTION - STARTING NEW TASK / RECEIVE / WAIT UNTIL tRFC 后缀&#xff1a; IN BACKGROUND TASK. CALL FUNCTION - IN BACKGROUND TASK qRFC 是tRFC的一个扩展。它允许你将多个tRFC调用序列化为一个…

RocketMQ集群4.9.2升级4.9.6版本

本文主要记录生产环境短暂停机升级RocketMQ版本的过程 一、整体思路 1.将生产环境MQ4.9.2集群同步到测试环境&#xff0c;并启动&#xff0c;确保正常运行。 2.参照4.9.2配置4.9.6集群 3.停掉4.9.2集群&#xff0c;启动4.9.6集群&#xff0c;测试确保正常运行。 4.停掉4.9.6集…

Python Web开发技巧VII

目录 装饰器inject_serializer 装饰器atomic rebase git 清理add的数据 查看git的当前工作目录 makemigrations文件名称 action(detailTrue, methods["GET"]) 如何只取序列化器的一个字段进行返回 Response和JsonResponse有什么区别 序列化器填表和单字段如…