matplotlib绘图详解

news2024/9/22 21:25:00

文章目录

  • matplotlib绘图详解
    • 一、 基础准备
      • 1、 matplotlib简介
      • 2、 环境准备
        • 2.1 安装
        • 2.2 参考文档
      • 3、 图表结构
      • 4、 常用图表
    • 二、绘图步骤
      • 1、 常用图表
        • 1.1 散点图
        • 1.2 柱状图
        • 1.3 饼图
        • 1.4 折线图
      • 2、 多图绘制
        • 2.1 subplot
        • 2.2 subplots
      • 3、 绘图配置
        • 3.1常用配置
          • 3.1.1 网格线
          • 3.1.2 标题和标签
          • 3.1.3 图例
        • 3.2 配置组

matplotlib绘图详解

一、 基础准备

1、 matplotlib简介

​ Matplotlib是一个Python 2D绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形。 Matplotlib可用于Python脚本,Python和IPython (opens new window)Shell、Jupyter (opens new window)笔记本,Web应用程序服务器和四个图形用户界面工具包。

​ Matplotlib 尝试使容易的事情变得更容易,使困难的事情变得可能。 您只需几行代码就可以生成图表、直方图、功率谱、条形图、误差图、散点图等。 更多的示例,请参见基础绘图例子和示例陈列馆。

​ 为了简单绘图,该 pyplot 模块提供了类似于MATLAB的界面,尤其是与IPython结合使用时。 对于高级用户,您可以通过面向对象的界面或MATLAB用户熟悉的一组功能来完全控制线型,字体属性,轴属性等。

2、 环境准备

2.1 安装

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

2.2 参考文档

中文文档:https://matplotlib.org.cn/

英文文档:https://matplotlib.org/

3、 图表结构

一些绘图基础知识

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9EuEWiJD-1671340186727)(null)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JQCM2sEa-1671340186817)(null)]

4、 常用图表

基本的视觉元素有三种:点、线、柱状。

  • 对于数值类型,用点来进行可视化。例如想要知道学生为某科课程花费的时间和考试成绩两者之间的关系,可以把每个学生的数据绘制一个点,绘制出散点图 scatter plot,可以查看两者之间的相关性。
  • 对于时间序列的数据类型,用线条来进行可视化。用线条将相关的数据点连接在一起,帮助我们观察随着时间的变化数据的变化趋势,这样的图叫做折线图line plot
  • 对于分类数据,需要查看数据是如何在各个类别之间分布的,可以使用柱状图 bar plot
  • 用来表示第三个维度时,可以使用颜色。一般很难在二维平面上表示三维数据,这时可以使用颜色视觉元素。最典型是热图heatmap,通过用渐进颜色显示用户热衷的区域或所在地理区域的图。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YApxq19Y-1671340186683)(null)]

二、绘图步骤

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mh0jafKQ-1671340186774)(null)]

1、 常用图表

1.1 散点图

语法:

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

参数说明:

x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。

s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。

c:点的颜色,默认蓝色 ‘b’,也可以是个 RGB 或 RGBA 二维行数组。

marker:点的样式,默认小圆圈 ‘o’。

cmap:Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。

norm:Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。

vmin,vmax::亮度设置,在 norm 参数存在时会忽略。

alpha::透明度设置,0-1 之间,默认 None,即不透明。

linewidths::标记点的长度。

edgecolors::颜色或颜色序列,默认为 ‘face’,可选值有 ‘face’, ‘none’, None。

plotnonfinite::布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。

**kwargs::其他参数。

使用示例:

# -*- coding: utf-8 -*-
"""
Created on Sun Dec 18 10:58:35 2022

@author: Administrator
"""
import matplotlib.pyplot as plt
import numpy as np
import time
np.random.seed(np.int64(time.time()))  # 设置随机种子

N = 50

x = np.random.rand(N)
y = np.random.rand(N)
color = np.random.rand(x.size)  # 随机颜色

plt.title("Draw Scatter") # 设置标题

plt.scatter(
    x, 
    y,
    c=color,  # 设置点的颜色
    s=x * 100,  # 设置每一个点的大小
    cmap="viridis",  # 设置颜色条
)  
plt.colorbar()  # 显示颜色条
plt.show()  # 显示图片

其余的参数可以自行去尝试.,更多参数可以在官方文档查看,链接:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.scatter.html

1.2 柱状图

语法:

matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

参数说明:

x:浮点型数组,柱形图的 x 轴数据。

height:浮点型数组,柱形图的高度。

width:浮点型数组,柱形图的宽度。

bottom:浮点型数组,底座的 y 坐标,默认 0。

align:柱形图与 x 坐标的对齐方式,‘center’ 以 x 位置为中心,这是默认值。 ‘edge’:将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align=‘edge’。

**kwargs::其他参数。

示例:

# -*- coding: utf-8 -*-
"""
Created on Sun Dec 18 10:58:35 2022

@author: Administrator
"""
import matplotlib.pyplot as plt
import numpy as np
import time
np.random.seed(np.int64(time.time()))  # 修改随机种子

width = 0.5
N = 10
x = np.arange(N)
y = np.random.rand(N)


plt.bar(x, y, width=width)
plt.show()

同时,还可以配置color等参数,可以在官方文档中查看。链接:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.bar.html

1.3 饼图

语法:

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

参数说明:

x:浮点型数组,表示每个扇形的面积。

explode:数组,表示各个扇形之间的间隔,默认值为0。

labels:列表,各个扇形的标签,默认值为 None。

colors:数组,表示各个扇形的颜色,默认值为 None。

autopct:设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。

labeldistance:标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如 <1则绘制在饼图内侧。

pctdistance::类似于 labeldistance,指定 autopct 的位置刻度,默认值为 0.6。

shadow::布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。

radius::设置饼图的半径,默认为 1。

startangle::起始绘制饼图的角度,默认为从 x 轴正方向逆时针画起,如设定 =90 则从 y 轴正方向画起。

counterclock:布尔值,设置指针方向,默认为 True,即逆时针,False 为顺时针。

wedgeprops :字典类型,默认值 None。参数字典传递给 wedge 对象用来画一个饼图。例如:wedgeprops={‘linewidth’:5} 设置 wedge 线宽为5。

textprops :字典类型,默认值为:None。传递给 text 对象的字典参数,用于设置标签(labels)和比例文字的格式。

center :浮点类型的列表,默认值:(0,0)。用于设置图标中心位置。

frame :布尔类型,默认值:False。如果是 True,绘制带有表的轴框架。

rotatelabels :布尔类型,默认为 False。如果为 True,旋转每个 label 到指定的角度。

使用示例:

# -*- coding: utf-8 -*-
"""
Created on Sun Dec 18 10:58:35 2022

@author: Administrator
"""
import matplotlib.pyplot as plt
import numpy as np


y = np.array([35, 25, 25, 15]) 
color = np.array(["#d5695d", "#5d8ca8", "#65a479", "#a564c9"])
labels = np.array(['A','B','C','D'])  
 

plt.pie(
        y,
        labels=labels, # 设置饼图标签
        colors=color, # 设置饼图颜色
        explode=y/sum(y), # 根据y值突出显示,值越大,距离中心越远
       )

plt.show()

更多參數請到官方網站查看:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.pie.html

1.4 折线图

使用语法:

matplotlib.pyplot.plot(x, y, fmt='b', scalex=True, scaley=True, data=None, **kwargs)

参数说明

x:浮点型数组

y:浮点型数组

fmt:点的形状,格式字符串只是快速设置基本行属性的缩写。所有这些以及更多都可以通过关键字参数进行控制,此参数不能作为关键字传递。默认是蓝色的线。[marker][line][color],可以在官方网站的查找

scalex:横向缩放比例

scaley:纵向缩放比例

使用示例:

# -*- coding: utf-8 -*-
"""
Created on Sun Dec 18 10:58:35 2022

@author: Administrator
"""
import matplotlib.pyplot as plt
import numpy as np


x = np.arange(2, 26, 2)  # 数据在X轴的位置,是一个可迭代对象

y = np.array([15, 13, 14.5, 17, 20, 25, 26, 26, 24, 22, 18, 15])  # 数据在Y轴的数据,是一个可迭代对象

# x轴和y轴的数据一起组成了所有要绘制出的坐标

plt.plot(x, y, 'g^')  # 传入x和y,通过plot绘图

plt.show()  # 程序在执行的时候展示图形

更多參數請到官方網站查看:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.plot.html

2、 多图绘制

我们可以使用 pyplot 中的 subplot()subplots() 方法来绘制多个子图。

subplot() 方法在绘图时需要指定位置,subplots() 方法可以一次生成多个,在调用时只需要调用生成对象的 ax 即可。

2.1 subplot

官方文档地址:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplot.html

使用语法:

subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)

以上函数将整个绘图区域分成 nrows 行和 ncols 列,然后从左到右,从上到下的顺序对每个子区域进行编号 1…N ,左上的子区域的编号为 1、右下的区域编号为 N,编号可以通过参数 index 来设置。

设置 numRows = 1,numCols = 2,就是将图表绘制成 1x2 的图片区域, 对应的坐标为:(1, 1), (1, 2)

使用示例:

# -*- coding: utf-8 -*-
"""
Created on Sun Dec 18 10:58:35 2022

@author: Administrator
"""
import matplotlib.pyplot as plt
import numpy as np


#plot 1:
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])

plt.subplot(1, 2, 1)  # 坐标为(1,1),总共有两个子图,1行2列
plt.plot(xpoints,ypoints)
plt.title("plot 1")

#plot 2:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.subplot(122)  # 坐标为(1,2),总共有两个子图,1行2列
plt.plot(x,y)
plt.title("plot 2")

plt.suptitle("Subplot Test")
plt.show()

2.2 subplots

语法:

matplotlib.pyplot.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, width_ratios=None, height_ratios=None, subplot_kw=None, gridspec_kw=None, **fig_kw)

参数说明:

  • nrows:默认为 1,设置图表的行数。
  • ncols:默认为 1,设置图表的列数。
  • sharex、sharey:设置 x、y 轴是否共享属性,默认为 false,可设置为 ‘none’、‘all’、‘row’ 或 ‘col’。 False 或 none 每个子图的 x 轴或 y 轴都是独立的,True 或 ‘all’:所有子图共享 x 轴或 y 轴,‘row’ 设置每个子图行共享一个 x 轴或 y 轴,‘col’:设置每个子图列共享一个 x 轴或 y 轴。
  • squeeze:布尔值,默认为 True,表示额外的维度从返回的 Axes(轴)对象中挤出,对于 N1 或 1N 个子图,返回一个 1 维数组,对于 N*M,N>1 和 M>1 返回一个 2 维数组。如果设置为 False,则不进行挤压操作,返回一个元素为 Axes 实例的2维数组,即使它最终是1x1。
  • subplot_kw:可选,字典类型。把字典的关键字传递给 add_subplot() 来创建每个子图。
  • gridspec_kw:可选,字典类型。把字典的关键字传递给 GridSpec 构造函数创建子图放在网格里(grid)。
  • **fig_kw:把详细的关键字参数传给 figure() 函数。

使用示例:

# -*- coding: utf-8 -*-
"""
Created on Sun Dec 18 10:58:35 2022

@author: Administrator
"""
import matplotlib.pyplot as plt
import numpy as np

# 创建一些测试数据 
x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)

# 创建一个画像和子图
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')

# 创建两个子图 
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.plot(x, y)
ax1.set_title('Sharing Y axis')
ax2.scatter(x, y)

# 创建四个子图
fig, axs = plt.subplots(2, 2, subplot_kw=dict(projection="polar"))
axs[0, 0].plot(x, y)
axs[1, 1].scatter(x, y)

# 共享 x 轴
plt.subplots(2, 2, sharex='col')

# 共享 y 轴
plt.subplots(2, 2, sharey='row')

# 共享 x 轴和 y 轴
plt.subplots(2, 2, sharex='all', sharey='all')

# 这个也是共享 x 轴和 y 轴
plt.subplots(2, 2, sharex=True, sharey=True)

# 创建标识为 10 的图,已经存在的则删除
fig, ax = plt.subplots(num=10, clear=True)

plt.show()

3、 绘图配置

3.1常用配置

3.1.1 网格线

我们可以使用 pyplot 中的 grid() 方法来设置图表中的网格线。

grid() 方法语法格式如下:

matplotlib.pyplot.grid(b=None, which='major', axis='both', )

参数说明:

  • b:可选,默认为 None,可以设置布尔值,true 为显示网格线,false 为不显示,如果设置 **kwargs 参数,则值为 true。
  • which:可选,可选值有 ‘major’、‘minor’ 和 ‘both’,默认为 ‘major’,表示应用更改的网格线。
  • axis:可选,设置显示哪个方向的网格线,可以是取 ‘both’(默认),‘x’ 或 ‘y’,分别表示两个方向,x 轴方向或 y 轴方向。
  • **kwargs:可选,设置网格样式,可以是 color=‘r’, linestyle=‘-’ 和 linewidth=2,分别表示网格线的颜色,样式和宽度。

使用示例:

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])


plt.title("Plot grid() Test")
plt.xlabel("x - label")
plt.ylabel("y - label")

plt.plot(x, y)
plt.grid()
plt.show()

更多参数请到官方文档查看:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.grid.html

3.1.2 标题和标签

我们可以使用 xlabel()ylabel() 方法来设置 x 轴和 y 轴的标签,使用 title() 方法来设置标题。

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.plot(x, y)

plt.title("Plot TEST TITLE And LABEL")
plt.xlabel("x - label")
plt.ylabel("y - label")

plt.show()

可以通过查看标题的相关参数来配置标签的参数,官网地址:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.title.html

注意:matplotlib是不支持中文的,如果我们要使用中文的话,我们需要使用fontdict来指定字体

3.1.3 图例

使用语法:

legend()
legend(handles, labels)
legend(handles=handles)
legend(labels)

使用示例:

ax.plot([1, 2, 3], label='Inline label')
ax.legend()

--------------------------------------
line, = ax.plot([1, 2, 3])
line.set_label('Label via method')
ax.legend()

--------------------------------------
ax.legend([line1, line2, line3], ['label1', 'label2', 'label3'])

--------------------------------------
line1, = ax.plot([1, 2, 3], label='label1')
line2, = ax.plot([1, 2, 3], label='label2')
ax.legend(handles=[line1, line2])

还有loc参数可以指定图例的位置等,更多参数请到官方文档查看:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html

3.2 配置组

我们可以使用rcParams来设置全局的一个组的整体配置

设置方式一:

语法:

plt.rcParams['property'] = 'value'  

使用示例:

# -*- coding: utf-8 -*-
"""
Created on Sun Dec 18 10:58:35 2022

@author: Administrator
"""
import matplotlib.pyplot as plt
import numpy as np

# 创建一些测试数据 
x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)

# 关于plt画图的一些配置
plt.rcParams['font.family'] = 'SimHei'  # 设置字体
plt.rcParams['axes.unicode_minus'] = False  # 在坐标轴上可以显示负号
plt.rcParams["axes.labelsize"] = 15  # 设置轴标签的大小
plt.rcParams["axes.titlesize"] = 25  # 设置标题字体大小
plt.rcParams['legend.fontsize'] = 15  # 设置图例字体大小
plt.plot(x, y)
plt.xlabel("x轴的数据")
plt.ylabel("y轴的值")
plt.title("折线图测试")

plt.show()

更多关于rcParams的属性,可以通过官方文档查看:https://matplotlib.org/stable/api/matplotlib_configuration_api.html#matplotlib.rcParams

设置方式二:

我们可以使用rc来配置

我们可以将上面的配置这样进行配置:

# 关于plt画图的一些配置
plt.rc("font", **{"family": 'SimHei'})
plt.rc("axes", **{"unicode_minus": False, "labelsize": 15, "titlesize": 25})
plt.rc("legend", fontsize=15)

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

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

相关文章

【问答篇】Java 基础篇 面试题(二)

每天进步一点~ 01、问&#xff1a;PreparedStatement与Statement的区别&#xff1f; 答&#xff1a; PreparedStatement是预编译语句执行者&#xff0c;数据库对sql语句进行预编译&#xff1b;Statement是执行时对sql语句进行编译 Statement存在sql注入的问题&#xff0c;Prep…

非零基础自学Golang 第10章 错误处理 10.3 Go语言宕机 10.4 宕机恢复

非零基础自学Golang 文章目录非零基础自学Golang第10章 错误处理10.3 Go语言宕机10.4 宕机恢复10.4.1 recover捕获宕机10.4.2 recover应用第10章 错误处理 10.3 Go语言宕机 一般而言&#xff0c;只有当程序发生不可逆的错误时&#xff0c;才会使用panic方法来触发宕机。 pan…

云计算运营—02FusionSphere 6.5 服务器虚拟化运营

FusionSphere 6.5 服务器虚拟化运营 1、虚拟化 特性介绍 云操作系统架构 Tool/PV driver(虚拟机驱动) Tools是虚拟机的驱动程序。 安装并启动Tools后&#xff0c;用户无需做任何操作&#xff0c;Tools即可提供以下功能: 1、为虚拟机提供高性能的磁盘I/0和网络I/0功能 2、为…

Element-plus的通用使用方法

Element-plus的通用使用方法说明一、组件属性的使用二、组件内部事件的使用三、组件插槽的使用四、组件外部方法的使用1、使用外部方法是要调用标签的$refs2.使用方法完说明 本教程适用于Element-plus的使用非常熟练本教程是对Element-plus的高度总结组件属性的使用组件插槽的…

中国自然地理分区数据集 (含农业区划、森林工程、生态保护区、九大流域等)

一中国生态功能保护区数据 代码 名称 类型 1 秦岭山地生态功能保护区 水涵养生态功能保护区 2 若尔盖一玛曲生态功能保护区 水涵养生态功能保护区 3 滇西北生态功能保护区 水涵养生态功能保护区 4 珠江源(云南部分)生态功能保护区 水涵养生态功能保护区 5 雅鲁藏布江源头生态…

web前端-javascript-Array数组方法详解(增删改,遍历,截取,连接,转字符串,反转数组,排序)

文章目录数组的方法1. push() 添加2. pop() 删除3. unshift() 添加4. shift() 删除5. forEach() 遍历1) 说明2) 使用6. slice() 截取7. splice() 删除8. concat() 连接9. join() 转String字符串10. reverse() 反转11. sort() 排序1) 简单用法2) 自己指定排序规则数组的方法 1.…

[附源码]Python计算机毕业设计Django新能源汽车租赁

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

全文检索、精准查询、坐标查询、复合查询、排序、分页、高亮

文章目录DSL查询文档DSL查询分类全文检索查询精准查询地理坐标查询复合查询算分函数查询布尔查询搜索结果处理排序单字段 排序多字段 排序地理坐标排序分页高亮RestClient查询文档发起查询请求解析响应match查询精确查询布尔查询排序、分页距离排序高亮高亮请求构建高亮结果解析…

NAT处理流程、分类和使用场景

1、NAT分为源NAT、目的NAT、双向&#xff08;Bidirection&#xff09;NAT 源NAT适用于私网访问公网的情形 目的NAT适用于公网访问私网的情形 双向NAT适用于双方都非真实地址的情形 看下图&#xff0c;第一条匹配源NAT Server&#xff0c;如果匹配则2直接转换目的地址 ---> …

32位单片机存储器中地址膨胀映射作用位带操作和对应地址位置关系

映射的作用 所谓映射&#xff0c;实际上是有另一种控制同一个位置功能的方式。就相当于两个方式操作对一个功能起到相同作用 位带&#xff08;bitband&#xff09;操作:直译出来的&#xff0c;根本意思是将原地址中每一个字节位都扩展成占用一个32bit位的地址&#xff08;一个…

ubuntu18中ISCE2.6+stamps实现PSInSAR时序地表形表处理

一 安装ubuntu 教程参考&#xff1a;https://baijiahao.baidu.com/s?id1741674041146755999&wfrspider&forpc 建议安装18或者20版本&#xff0c;版本过高会导致版本不匹配的问题。 二安装Anaconda3 教程参考&#xff1a;https://zhuanlan.zhihu.com/p/269183148 注意…

[附源码]计算机毕业设计Python4S店汽车售后服务管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

RBAC与连表查询

文章目录0. 前言1. RBAC模型1.1 什么是RBAC模型1.2 准备工作2. 连表操作2.1 常用连表图2.2 准备SQL语句2.3 Mybatis 连表3. 总结与补充0. 前言 连表学习、练习经典&#xff1a;RBAC权限模型、5表联查。 本文采用的持久层实现方式&#xff1a;Mybatis/Mybatis-Plus。 学习基础…

QT系列第6节 QT中常用控件

1. QComboBox 下拉列表 2. QPlainTextEdit QPlainTextEdit的文字内容以QTextDocument类型存储&#xff0c;函数document返回这个文档 对象的指针 QTextDocument是内存中的文本对象&#xff0c;以文本块方式存储&#xff0c;每个段落以换行符结束。 QTextDocument提供一些…

常用日期类

第一代日期类 Date类 Date&#xff1a;精确到毫秒&#xff0c;代表特定的瞬间 当需要获取当前时间时可以直接new一个Date对象&#xff0c;使用无参构造器 Date date new Date();日期转文本 但是直接使用的话&#xff0c;它是国外的时间格式&#xff1a;Sat Dec 17 17:02:3…

Apache IoTDB v1.0.0安装试用小结( linux环境)

1 简介 Apache IoTDB 是一个开源物联网时序数据库。 github地址&#xff1a;https://github.com/apache/iotdb 2 下载 下载地址&#xff1a;https://iotdb.apache.org/Download/ 下载&#xff0c;输入命令&#xff1a; wget https://archive.apache.org/dist/iotdb/1.0.…

【简单工厂模式-2】简单工厂模式的代码实现及使用场景

简单工厂模式并属于Gof 23个经典设计模式其中之一&#xff0c;只是通常会将它作为学习其他工厂设计模式的入门&#xff0c;而且在开发中&#xff0c;简单工厂模式也是比较常见的&#xff0c;设计思想比较简单。 1. 定义 简单工厂模式定义一个工厂类&#xff0c;提供获取对象的…

Makefile、.mk、.bp、Blueprint、Soong、kati工具链的关系

一、Android版本相应的发展演变过程: Android 7.0引入ninja和kati Android 8.0使用Android.bp来替换Android.mk&#xff0c;引入Soong Android 9.0强制使用Android.bp 二、生成.ninja工具链关系&#xff1a;Android.bp、Blueprint、Soong、kati&#xff1a;总之都是用来把Make…

数据库拆分4--使用sharding-jdbc来实现水平拆分

有三张表 user log order表&#xff0c;先将user log 和order垂直分库&#xff0c;然后将user表水平拆分 配置文件 spring.shardingsphere.enabledtruespring.shardingsphere.datasource.nameswim-user,wim-orderspring.shardingsphere.datasource.wim-user.typecom.alibaba.…

vue入门--2

1.计算属性和侦听器 计算属性 VS 方法 如果不使用计算属性&#xff0c;在 methods 里定义了一个方法&#xff0c;也可以实现相同的效果&#xff0c;甚至该方法还可以接受参数&#xff0c;使用起来 更灵活。 既然 methods 同样可以解决模板中复杂逻辑计算的问题&#xff0c;那么…