04_seaborn基本使用
1.seaborn设置整体风格
seaborn提供5中主题风格:
- darkgrid
- whitegrid
- dark
- white
- ticks
主要通过set()和set_style()两个函数对整体风格进行控制。
准备工作:
import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
# 定义一个绘图函数
def sinplot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1, 7):
plt.plot(x, np.sin(x + i*.5)*(7-i)*flip)
默认设置1
输入:
# 一般图形, 默认设置
# 效果同sns.set() sinplot()
输出:
默认设置2
输入:
# 默认设置 sns.set() # 使用seaborn的默认设置
sinplot()
输出:
设置风格为ticks
输入:
# 设置风格为ticks # 可以直接通过参数名传参,也可以通过set_style()传参
# 效果同:set_style('ticks') sns.set(style='ticks')
sinplot()
输出:
设置为whitegrid
输入:
sns.set_style('whitegrid')
sinplot()
输出:
其他主题设置风格类似,可通过set(style=" ")方式,也可以通过set_style( " " )的方式设置。
具体可使用print(help(sns.set))函数查看帮助文档。
2.seaborn设置细节风格
设置边框
输入:
# 边框设置 sinplot()
sns.despine() # 去掉边框,默认去掉上边框和右边框
输出:
也可以通过参数名传参,来决定哪个边框不显示。
输入:
# 也可以通过参数名传参,决定哪个边框不显示 sinplot()
sns.despine(bottom=True, right=True) # True代表不显示
输出:
设置子图风格
输入:
# 对子图设置不同风格 with sns.axes_style('darkgrid'):
plt.subplot(211) # 对第一个子图设置风格darkgrid
sinplot() plt.subplot(212)
sinplot(2) # 通过关键字with,对不同子图设置风格
输出:
设置内容
输入:
# 对图中内容进行设置,包括线条颜色,粗细和刻度等 sns.set_context("paper") # 使用paper风格
plt.figure(figsize=(10, 6))
sinplot()
输出:
字体、线宽设置
输入:
# 设置字体大小,线宽等 sns.set_context("talk", font_scale=1.5, rc={'line.linewidth':2.5}) # 使用talk风格
plt.figure(figsize=(10, 6))
sinplot()
输出:
3.调色板的使用
seaborn主要提供分类色板、颜色空间、连续色板和xkcd等操作,对图像颜色进行设置。
分类色板
主要涉及以下函数:
- color_palette() 能传入任何Matplotlib所支持的颜色
- color_palette() 不传入参数则为默认颜色
- set_palette() 设置所有图的颜色
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt sns.set(rc={'figure.figsize': (6, 6)}) # 设置画板大小
输入:
# 分类色板 current_palette = sns.color_palette() #默认是deep,深色风
sns.palplot(current_palette)
sns.palplot(sns.color_palette("muted")) #柔和风
sns.palplot(sns.color_palette("pastel",9)) #粉蜡笔风
sns.palplot(sns.color_palette("bright",10)) #明亮风
sns.palplot(sns.color_palette("dark",11)) #黑暗风
sns.palplot(sns.color_palette("colorblind",12)) # 色盲风 # 6个默认的颜色循环主题: deep, muted, pastel, bright, dark, colorblind
输出:
颜色空间
颜色空间主要通过hls_palette()函数来控制颜色的色调、亮度和饱和
- h-色调 hue
- l-亮度 lightness
- s-饱和 saturation
输入:
# hls_palette()函数对颜色进行设置 sns.palplot(sns.hls_palette(8,h=.8, l=.7, s=.9))
sns.palplot(sns.hls_palette(8,h=0.1, l=.3, s=.6)) #sns.hls_palette设置得到HLS的色彩空间中的颜色,颜色个数,
# h设置色调,
# l设置亮度,
# s设置饱和度,
# 取值范围均在(0,1)
输出:
输入:
# 设置成对的,相近颜色 sns.palplot(sns.color_palette("Paired",10))
# 按对分组,每一对之间属同一色系中的差异较大的两个颜色
# 对于对之间属于不同色系的颜色
输出:
xkcd颜色
xkcd包含了一套针对随机RGB色的命名。产生了954个可以通过xdcd_rgb字典中调用的命名颜色。
输入:
# xkcd通过skcd_rgb设置颜色 plt.plot([0, 1], [3, 0], sns.xkcd_rgb["piss yellow"], lw=4)
plt.plot([0, 1], [1, 1], sns.xkcd_rgb["cherry"], lw=3)
plt.plot([0, 1], [0, 3], sns.xkcd_rgb["robin egg blue"], lw=3) # 通过颜色名字来调用颜色,
# 也可以通过颜色的16进制编码调用颜色
# lw : linewidth设置
输出:
输入:
# xkcd 通过颜色名称设置颜色 colors = ["windows blue", "amber", "greyish", "faded green", "dusty purple"]
sns.palplot(sns.xkcd_palette(colors))
输出:
连续色板
色彩随数据变换,比如数据越来越重要则颜色越来越深。
输入:
# 设置渐变色 sns.palplot(sns.color_palette("Blues")) #设置某种颜色的一系列渐变色
sns.palplot(sns.color_palette("Blues_r",8)) # blues_r 反向
输出:
输入:
# 设置light风格的渐变色 #使用函数light_palette函数,设置连续色板的风格
sns.palplot(sns.light_palette("green")) # 设置light风格的绿色渐变
输出:
输入:
# 设置dark风格的渐变色 # 使用dark_palette函数设置dark风格的渐变
sns.palplot(sns.dark_palette("purple")) # 设置dark风格的紫色
输出:
输入:
# 设置渐变的颜色排列顺序 # reverse参数设置渐变的排列顺序
sns.palplot(sns.light_palette("navy", reverse=True)) #reverse可以设置颜色排列顺序
输出:
渐变色简单应用
输入:
# 渐变色简单易用 # 生成一个多元正态分布矩阵
# 参数mean : 均值
# 参数cov : 协方差, array类型
# 参数size: 个数
x, y = np.random.multivariate_normal(mean=[0, 0], cov=[[1, -.5], [-.5, 1]], size=300).T pal = sns.dark_palette("green",as_cmap=True)
# as_cmap=True,返回一个colormap对象 sns.kdeplot(x, y, cmap=pal)
# kdeplot : 核密度估计图,
# cmap=pal,以colormap方式来设置颜色
输出:
4.单变量分析图
import numpy as np
import pandas as pd
from scipy import stats, integrate
import matplotlib.pyplot as plt
import seaborn as sns
频数直方图
一般频数直方图
输入:
# 频数直方图 # 生成100个成标准正态分布的随机数
x = np.random.normal(size=100) # sns.distplot画频数直方图
# kde=True,进行核密度估计
sns.distplot(x,kde=True)
输出:
设置频数直方图的bins
输入:
# 设置频数直方图的bins sns.distplot(x, bins=20, kde=False)
输出:
分析数据分布情况
输入:
# 数据分布情况 # kde核密度估计,
# fit拟合参数(黑色线条)
# 蓝色线条为核密度估计线条
sns.distplot(x, kde=True, fit=stats.alpha)
输出:
5.双变量分析图
主要用一下几个图画双变量的分析图:
# 构造数据 mean, cov = [0, 1], [(1, .5), (.5, 1)]
# 二维多正态分数的数据
data = np.random.multivariate_normal(mean, cov, 200)
df = pd.DataFrame(data, columns=["x", "y"]) #将array结构转换为dataframe结构,添加列名。
散点图
输入:
# 散点图 # 一般用散点图展示两个变量间的关系
sns.jointplot(x='x', y='y', data=df, size=7) # x,y参数也可以用x=df['x'], y=df['y'] 的形式传入 # sns.jointplot画双变量关系图,
# data传入dataframe,x,y设置两个变量数据,
# size设置图的大小
输出:
六角图
输入:
# 六角图 # 数据
x, y = np.random.multivariate_normal(mean, cov, 1000).T # 设置画图风格
with sns.axes_style("white"):
sns.jointplot(x=x, y=y, kind="hex", color="k", size = 7) # kind='hex' 画出六角图
# 六角图中颜色越深的区域表示该区域的点越密集,数据越多
输出:
pairplot函数
输入:
# pairplot函数 # 分析多个变量间,每两个变量间的关系
# 不同变量间用散点图表示
# 同一变量用直方图表示 # 内置数据集:鸢尾花的数据集
iris = sns.load_dataset("iris")
# print (iris.head())
sns.pairplot(iris)
输出:
6.双变量回归分析图
# 数据导入 import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt import seaborn as sns
sns.set(color_codes=True) # 内置数据集tips小费
tips = sns.load_dataset("tips") tips.head()
两变量回归关系regplot实现
输入:
# 两变量画回归关系图(regplot函数) # regplot()和lmplot()都可以绘制回归关系,推荐regplot() plt.figure(figsize = (7,7))
sns.regplot(x="total_bill", y="tip", data=tips)
# sns.regplot画数据散点和线性拟合的图,
# 设置x坐标,y坐标,data传入dataframe
输出:
两变量回归关系图lmplot实现
输入:
# 两变量画回归关系图(lmplot函数) sns.lmplot(x="total_bill", y="tip", data=tips,size = 7)
输出:
抖动设置
输入:
# 设置横向抖动 # x_jitter参数设置点横向抖动量。
sns.regplot(x="size", y="tip", data=tips, x_jitter=.05) # 部分数据重叠,因此设置抖动,减少覆盖点,便于观察点的分布
输出:
7.多变量回归分析图
# 数据读取 import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns # 设置风格
sns.set(style="whitegrid") # 数据加载
titanic = sns.load_dataset("titanic")
tips = sns.load_dataset("tips")
iris = sns.load_dataset("iris")
分类散点图stripplot()实现(两变量)
输入:
# 分类散点图(两变量:day,total_bill) # sns.stripplot()和sns.swarmplot()均能实现分类散点图 plt.figure(figsize=(10,6)) # 图型基本设置
plt.xticks(size=12)
plt.yticks(size=12)
plt.xlabel('day',size=16)
plt.ylabel( 'total_bill',size=16) # 分析day与total_bill间的关系
sns.stripplot(x="day", y="total_bill", data=tips)
输出:
数据重叠严重,影响观察数据的量,因此设置抖动。
输入:
# 数据重叠严重,影响观察数据的量,因此设置抖动 # jitter=True
sns.stripplot(x="day", y="total_bill", data=tips, jitter=True)
输出:
分类散点图swarmplot()实现(两变量)
输入:
# swarmplot函数实现类别散点图 sns.swarmplot(x="day", y="total_bill", data=tips)
输出:
分类散点图三变量实现
输入:
# 分类散点图(三变量:day, total_bill, sex) # 传入的第三个变量,通过颜色区分 plt.figure(figsize=(10,6))
palette1=sns.color_palette("bright") # hue设置第三个变量,palette设置调色板颜色
sns.swarmplot(x="day", y="total_bill", hue="sex",palette = palette1,data=tips)
输出:
输入:
# 分类散点图(三变量:day, total_bill, time) plt.figure(figsize=(10,6)) # hue接收第三个变量
sns.swarmplot(x="total_bill", y="day", hue="time", data=tips)
输出:
盒图(三变量)
盒图是显示数据离散度的一种图形。它对于显示数据的离散的分布情况效果不错。
IQR = Q3-Q1,即上四分位数与下四分位数之间的差,也就是盒子的长度。
N = 1.5IQR 如果一个值>Q3+N或 < Q1-N,则为离群点
盒图特点:
通过盒图,在分析数据的时候,盒图能够有效地帮助我们识别数据的特征:
直观地识别数据集中的异常值(查看离群点)。
判断数据集的数据离散程度和偏向(观察盒子的长度,上下隔间的形状,以及胡须的长度)。
输入:
# 盒图(三变量:day,total_bill, time) # sns.boxplot()
# 盒图是显示数据离散度的一种图形。它对于显示数据的离散的分布情况效果不错。
# IQR = Q3-Q1,即上四分位数与下四分位数之间的差,也就是盒子的长度。
# N = 1.5IQR 如果一个值>Q3+N或 < Q1-N,则为离群点 # 盒图特点:
# 通过盒图,在分析数据的时候,盒图能够有效地帮助我们识别数据的特征:
# 直观地识别数据集中的异常值(查看离群点)。
# 判断数据集的数据离散程度和偏向(观察盒子的长度,上下隔间的形状,以及胡须的长度)。 # 基本设置
plt.figure(figsize=(10,6))
plt.xticks(size=12)
plt.yticks(size=12)
plt.xlabel('day',size=16)
plt.ylabel( 'total_bill',size=16) sns.boxplot(x="day", y="total_bill", hue="time", data=tips)
输出:
小提琴图(三变量)
输入:
# 小提琴图(三变量:day, total_bill, time) # sns.violinplot()函数实现 plt.figure(figsize=(10,6))
plt.xticks(size=12)
plt.yticks(size=12)
plt.xlabel('total_bill',size=16)
plt.ylabel( 'day',size=16) # sns.violinplot()画小提琴图
sns.violinplot(x="total_bill", y="day", hue="time", data=tips)
# 图中白点是中位数,
# 中间黑色盒形是上四分位点和下四分位点,
# 黑色的线条表示离群点的离群程度,越长表示离群点越远 plt.show()
输出:
小提琴图设置
输入:
# 小提琴图设置(三变量:day, total_bill, sex) # split设置左右区分
sns.violinplot(x="day", y="total_bill", hue="sex", data=tips, split=True) plt.show()
输出:
小提琴图和分类散点图组合
输入:
# 小提琴图和分类散点图组合 # 基本设置
plt.figure(figsize=(10,6))
plt.xticks(size=12)
plt.yticks(size=12)
plt.xlabel('total_bill',size=16)
plt.ylabel( 'day',size=16) # inner设置是否显示中间的盒形和线条
sns.violinplot(x="day", y="total_bill", data=tips, inner=None)
# alpha设置透明度
sns.swarmplot(x="day", y="total_bill", data=tips, color="w", alpha=.6) plt.show()
输出:
平均数条形图(三变量)
输入:
# 平均数条形图(三变量:sex, survived, class) # sns.barplot()函数实现平均数条形图 # 基本设置
plt.figure(figsize=(10,6))
plt.xticks(size=12)
plt.yticks(size=12)
plt.xlabel('sex',size=16)
plt.ylabel( 'survived',size=16) sns.barplot(x="sex", y="survived", hue="class", data=titanic,ci=95)
#黑色线条表示置信度,
# ci 设置黑色线条的大小,范围在[0,100] plt.show()
输出:
点图(三变量)
输入:
# 点图(三变量:sex, survived, class) # sns.pointplot()绘制点图 plt.figure(figsize=(10,6))
plt.xticks(size=12)
plt.yticks(size=12)
plt.xlabel('sex',size=16)
plt.ylabel( 'survived',size=16) # 反映变化趋势
sns.pointplot(x="sex", y="survived", hue="class", data=titanic,ci=70)
# ci=70 设置执行度 plt.show()
输出:
点图细节设置
输入:
# 点图细节设置 sns.pointplot(x="class", y="survived", hue="sex", data=titanic,
palette={"male": "g", "female": "m"},
markers=["^", "o"], linestyles=["-", "--"],
scale=1.5) # palette 通过调色板来设置颜色,
# markers设置点的形状,
# linestyles设置显的风格,
# scale设置线条的粗细 plt.show()
输出:
多层面板分类图
输入:
# 多层面板分类图 # sns.factorplot() 实现多层面板分类图 # x,y,hue设置要画在一个图中的数据集变量名
sns.factorplot(x="class", y="survived", hue="sex", data=titanic, size=6,ci=50) plt.show()
输出:
输入:
# 通过kind参数指定图的类型 sns.factorplot(x="day", y="total_bill", hue="smoker", data=tips, kind="bar", size=6) plt.show()
输出:
四个变量下的分类散点图
输入:
# 四个变量下的分类散点图 # kind参数指定图类型
# loc参数接收第四个参数
sns.factorplot(x="day", y="total_bill", hue="smoker",col="time", data=tips, kind="swarm", size=6) # 共四个变量了
# col和row设置更多的变量名,进行平铺显示(以不同的图进行区分)
plt.show()
输出:
四变量下的盒图
输入:
# 四变量下的盒图 sns.factorplot(x="time", y="total_bill", hue="smoker",
col="day", data=tips, kind="box", size=6, aspect=1,col_wrap=2) plt.show()
输出:
多变量分析图其他参数
Parameters:
- x,y,hue 数据集变量 变量名
- date 数据集 数据集名
- row,col 更多分类变量进行平铺显示 变量名
- col_wrap 每行的最高平铺数 整数
- estimator 在每个分类中进行矢量到标量的映射 矢量
- ci 置信区间 浮点数或None
- n_boot 计算置信区间时使用的引导迭代次数 整数
- units 采样单元的标识符,用于执行多级引导和重复测量设计 数据变量或向量数据
- order, hue_order 对应排序列表 字符串列表
- row_order, col_order 对应排序列表 字符串列表
- kind : 可选:point 默认, bar 柱形图, count 频次, box 箱体, violin 提琴, strip 散点,swarm 分散点 size 每个面的高度(英寸) 标量 aspect 纵横比 标量 orient 方向 "v"/"h" color 颜色 matplotlib颜色 palette 调色板 seaborn颜色色板或字典 legend hue的信息面板 True/False legend_out 是否扩展图形,并将信息框绘制在中心右边 True/False share{x,y} 共享轴线 True/False
8.FacetGrid()的使用方法
# 读取数据
import numpy as np
import pandas as pd
import seaborn as sns
from scipy import stats
import matplotlib as mpl
import matplotlib.pyplot as plt sns.set(style="ticks")
tips = sns.load_dataset("tips")
# tips.head()
FacetGrid()绘制频数直方图
输入:
# FacetGrid()绘制频数直方图 # sns.FacetGrid,以网格图的方式呈现多变量的关系 # 传入的数据集“tips”
# 指定第四个变量“time”
g = sns.FacetGrid(tips, col="time", size=6) # 创建画板 # 绘制“tips”的频数直方图
g.map(plt.hist, "tip",edgecolor="white")
输出:
FacetGrid()绘制散点图
输入:
# FacetGrid()绘制散点图 # 创建画板及变量
g = sns.FacetGrid(tips, col="sex", hue="smoker",size=6)
g.map(plt.scatter, "total_bill", "tip", alpha=.7) #添加图例
g.add_legend()
plt.show()
输出:
FacetGrid()绘制回归关系图
输入:
# FacetGrid()绘制回归关系图 # margin_titles是否显示边缘的标题
g = sns.FacetGrid(tips, row="smoker", col="time", margin_titles=True)
#fit_reg是否显示拟合曲线
g.map(sns.regplot, "size", "total_bill", color="g", fit_reg=False, x_jitter=.1) plt.show()
输出:
FacetGrid()绘制bar图
输入:
# FacetGrid()绘制bar图 g = sns.FacetGrid(tips, col="day", size=4, aspect=.5)
# aspect设置长宽比 g.map(sns.barplot, "sex", "total_bill")
plt.show()
输出:
FacetGrid()指定画图顺序
输入:
# 指定画图顺序 from pandas import Categorical # 获取数据的索引
ordered_days = tips.day.value_counts().index
print (ordered_days) # Categorical指定顺序,里面传入自定义顺序
ordered_days = Categorical(['Thur', 'Fri', 'Sat', 'Sun']) # row_order=ordered_days设置顺序
g = sns.FacetGrid(tips, row="day", row_order=ordered_days,
size=1.7, aspect=4,) g.map(sns.boxplot, "total_bill")
plt.show()
输出:
FacetGrid()绘制散点图
输入:
# FacetGrid()绘制散点图 pal = dict(Lunch="seagreen", Dinner="gray")
g = sns.FacetGrid(tips, hue="time", palette=pal, size=5) # s设置点的大小,
# edgecolor设置点边缘的颜色
g.map(plt.scatter, "total_bill", "tip", s=50, alpha=.7, linewidth=2, edgecolor="r")
# 添加图例
g.add_legend() plt.show()
输出:
散点图细节设置:
输入:
# 散点图细节设置1 # palette 设置颜色
# hue_kws指定线型
g = sns.FacetGrid(tips, hue="sex", palette="Set1", size=5, hue_kws={"marker": ["^", "v"]})
g.map(plt.scatter, "total_bill", "tip", s=100, linewidth=.5, edgecolor="white")
g.add_legend() plt.show()
输出:
输入:
# 散点图细节设置2 # 涉及到了四个变量,
# tips、totall bill、smoker和sex,
# 使用row和col的两个变量进行平铺区分显示
with sns.axes_style("white"):
g = sns.FacetGrid(tips, row="sex", col="smoker", margin_titles=True, size=5) # 设置坐标轴的标题,传入XY轴的标题,字符串形式
g.map(plt.scatter, "total_bill", "tip", color="#334488", edgecolor="white", lw=.5); # 设置标签
g.set_axis_labels("Total bill (US Dollars)", "Tip") # 设置坐标轴刻度
g.set(xticks=[10, 30, 50], yticks=[2, 6, 10]) #设置子图之间的间距
g.fig.subplots_adjust(wspace=.02, hspace=.02)
输出:
PairGrid()绘制多变量间散点图
一般图形
输入:
# PairGrid()画多变量间散点图 # 读取数据
iris = sns.load_dataset("iris") # 指定画板,传入数据
g = sns.PairGrid(iris) # map画图
g.map(plt.scatter) plt.show()
输出:
细节设置
输入:
# PairGrid()细节设置 g = sns.PairGrid(iris) # 设置对角线上的图的类型
g.map_diag(plt.hist) # 设置非对角线上图的类型
g.map_offdiag(plt.scatter) plt.show()
输出:
添加变量
输入:
# 添加变量species g = sns.PairGrid(iris, hue="species")
g.map_diag(plt.hist)
g.map_offdiag(plt.scatter)
g.add_legend()#添加图例
plt.show()
输出:
设置多指标
输入:
# 设置要画的指标 # 通过vars指定要画的指标
g = sns.PairGrid(iris, vars=["sepal_length", "sepal_width"], hue="species")
g.map(plt.scatter)
g.add_legend() plt.show()
输出:
颜色控制
输入:
# 颜色控制 # palette 使用调色板来设置颜色
g = sns.PairGrid(tips, hue="size", palette="GnBu_d",size = 4)
g.map(plt.scatter, s=70, edgecolor="white")
g.add_legend() plt.show()
输出:
9.热度图(heatmap)
一般图形
# 数据读取
import matplotlib.pyplot as plt
import numpy as np;
np.random.seed(0)
import seaborn as sns;
sns.set()
输入:
# 热度图
uniform_data = np.random.rand(3, 3)
# print (uniform_data)
heatmap = sns.heatmap(uniform_data) # 通过颜色的变化反映数字大小
输出:
细节设置
设置bar两端
输入:
# vmix,vmax设置bar两端 # 设置bar的两端
ax = sns.heatmap(uniform_data, vmin=0.2, vmax=0.5) # 大于0.5定为淡色,小于0.2就定为黑色
输出:
设置中间数
输入:
# center设置中间数 # center = 0
# 大于0属于一种色系
# 小于0属于另一种色系 normal_data = np.random.randn(3, 3)
# print (normal_data)
ax = sns.heatmap(normal_data, center=0)
输出:
pivot()重塑数据
一般图形
输入:
# pivot()重塑数据 # 数据读取
flights = sns.load_dataset("flights")
# flights.head() # pivot重塑数据,产生一个“pivot”表格,形成dataframe结果
flights1 = flights.pivot("month", "year", "passengers")
# print (flights1) plt.figure(figsize=(10,8))
ax = sns.heatmap(flights1)
输出:
添加数值
输入:
# 添加数值 plt.figure(figsize=(10,8)) # annot显示注释,
# fmt设置注释的形式
ax = sns.heatmap(flights1, annot=True,fmt="d") # fmt='d': 十进制的整数显示
# fmt='f' : float小数
# fmt='e': 科学计数法
输出:
设置间距
输入:
# 设置间距 plt.figure(figsize=(10,8)) # linewidths设置色块之间的间距
ax = sns.heatmap(flights1, linewidths=1)
输出:
设置颜色
输入:
# 设置颜色 plt.figure(figsize=(10,8))
ax = sns.heatmap(flights1, cmap="YlGnBu") # cmap设置颜色。
输出:
设置bar的显示与否
输入:
# 设置bar的显示与否 plt.figure(figsize=(8,8)) #cbar设置colorbar是否显示
ax = sns.heatmap(flights1, cbar=False)
输出:
04_seaborn基本使用的更多相关文章
随机推荐
- laravel6.0控制器-资源控制器
控制器:控制器用来处理业务的,不应该处理逻辑,如果是小项目可以把逻辑写到控制器里,大点的项目应该抽离出来业务处理层如下:services业务处理层:比如:获取值,验证值,异常捕获命名规则:控制器名:用 ...
- SpringBoot整合MybatisPlus3.X之Sequence(二)
数据库脚本 DELETE FROM user; INSERT INTO user (id, name, age, email) VALUES (, , 'test1@baomidou.com'), ...
- 数字麦克风PDM信号采集与STM32 I2S接口应用(三)
本文是数字麦克风笔记文章的数据处理篇. 读取数字麦克风的信号,需要嵌入式驱动和PC应用的结合,驱动负责信号采集,应用代码负责声音分析. 一般而言,在完成特征分析和实验之后,把优化过的代码固化到嵌入式端 ...
- 如何获取比 dism.log 更详细的日志
正文 在工作中,曾经遇到过一个问题. 有一个 component,名字叫做 Oxford Adaptive Learning Dictionary,是一款牛津词典的应用.这个 component,需要 ...
- Java基础系列4:抽象类与接口的前世今生
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 1.抽象类: 当编写 ...
- FastDFS图片服务器单机安装步骤(修订版)
前面已经讲 一张图秒懂微服务的网络架构,通过此文章可以了解FastDFS组件中单机安装流程. 单机版架构图 以下为单机FastDFS安装步骤 一.环境准备 CentOS 7.X libfastcomm ...
- python——函数的基本概念
Python函数认识 数学定义 y = f(x), y是x的函数,x是自变量. python中的函数组成 由若干语句组成的语句块.函数名称.参数列表构成,函数是组织代码的最小单元 像一个黑盒子,我们给 ...
- python手册学习笔记2
笔记2 > http://www.pythondoc.com/pythontutorial3/datastructures.html 列表操作 list.append(x) 把一个元素添加到列表 ...
- Kubernetes(k8s)集群安装
一:简介 二:基础环境安装 1.系统环境 os Role ip Memory Centos 7 master01 192.168.25.30 4G Centos 7 node01 192.168.25 ...
- 访问控制列表ACL
1.ACL Access list ,访问控制列表. 2.作用 限制网络中的地址访问. 3.主要内容 Eg: Router(config)#access-list ? <一>. <1 ...