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

Python数据可视化(够用版):懂基础 + 专业的图表抛给Tableau等专业绘图工具

我先说说文章标题中的“够用版”啥意思,为什么这么写。

按照我个人观点,在使用Python进行数据分析时,我们有时候肯定要结合到图表去进行分析,去直观展现数据的规律和特定,那么我们肯定要做一些简单的可视化,但是呢,也不需要太过精美的图,简单的图简单到包含基本功能、看得懂就行。假如我们不会用python去绘制一些简单的图,我们可能要将数据导入到其他绘图工具(比如Excel等),然后再绘图,这太麻烦了;又假如我们很熟悉Python的各种专门绘图的库,也会用Python做很精美的图表,那当然最好,不过效率自然没有专业的绘图工具(比如Power BI、Tableau、Excel等)高,因为python写代码很费时间和精力,专业的绘图软件往往是拖拽式的,不用写代码,巨方便。我写这篇文章呢,就是保证我们能够用python做简单的可视化图表,但是不会很深入学习,都是常见的图表,所以说我才说“够用”哈。当然了,个人观点,谨慎采纳。

还有就是,本文只讲matplotlib库,不讲别的绘图相关的库,因为matplotlib太实用了。


目录

一、基本概念

1、matplotlib图表元素组成

2、层级结构

3、图表主要元素调整函数说明

4、常见二维图表的绘制函数

5、函数常用参数取值说明

二、常见图表绘制演示

(一)折线图

1.1 单个折线图

1.2 多个折线(在同一张图,且同一纵轴)

1.3 “双纵坐标”折线图

1.4 带数据标记的折线图

 (二)在一个图形(figure)中绘制多张子图

 (三)散点图

3.1 简单的散点图

3.2 带数据标记的散点图

(四)柱状图(竖直型)

4.1 带数据标记的柱状图

4.2 并列柱状图(带数据标记)

4.3 堆积柱状图

(五)饼图

(六)统计直方图

(七)箱线图


一、基本概念

1、matplotlib图表元素组成

图形(figure)、坐标图形(axes)、图名或标题(title)、图例(legend)、主要刻度(major tick)、次要刻度(minor tick)、主要刻度标签(major tick labe l)、次要刻度标签(minor tick label)、Y轴名(Y axis label)、X轴名(X axis label)、边框图(line)、数据标记(markers)、网格(grid)线等。

下图以及部分文本内容取自于《Python数据可视化之美:专业图表绘制指南》。

matplotlib主要包含两类元素

  • 基础类:线(line)、点(maker)、文字(text)、图例(legend)、标题(title)等;
  • 容器类:图形(figure)、坐标图形(axes)、坐标轴(axis)、刻度(tick)

2、层级结构

图形 (figure)→坐标图形(axes)→坐标轴(axis)→刻度(tick)

  • figure对象:整个图形即是一个figure对象,也是一个容器。figure对象至少包含一个子图(也就是axis对象)。它还包含一些特殊对象,比如图名(title)等。
  • axes对象:字面上理解,axes是axis(坐标轴)的复数,但它并不是指坐标轴,而是子图对象。可以这样理解,每一个子图都有X轴和Y轴,axes则用于代表这两个坐标轴所对应的一个子图对象。比如axes[0,0],表示第一个子图,而不是坐标轴,axes[0,1]表示第二个子图。
  • axis对象:axis是数据轴对象,是比figure低一级的容器,主要用于控制数据轴上的刻度位置和显示数值。axis有locator和formatter两个子对象,分别用于 控制刻度位置和显示数值。
  • tick对象:常见的二维直角坐标系(axes)都有两条坐标轴 (axis),横轴(X axis)和纵轴(Y axis)。每个坐标轴都包含两 个元素:刻度(容器类元素),该对象里还包含刻度本身和刻度标 签;标签(基础类元素),该对象包含的是坐标轴标签。

3、图表主要元素调整函数说明

函数核心参数说明功能
subplots()nrows(子图的行数), ncols(子图的列数), figsize(图表大小), dpi(分辨率)、sharex、sharey(子图之间是否共享坐标轴,布尔类型)用于创建一个或多个子图(通过设置nrows、ncols实现),返回值为Figure对象(用于控制整个图形)和包含多个子图的Axes对象(对象用于控制每个子图)
figure()figsize(图表大小)、dpi(分辨率)、facecolor(背景色)、edgecolor设置图表大小、分辨率
title()

str(图名)、fontsize、color

设置标题

xlabel()

ylabel()

xlabel(x轴名称)、ylabel(y轴名称)、rotation(设置标签显示方向,取值为0或1)

设置x、y坐标轴名称

axis()

xlim()

ylim()

xmin、xmax 或 ymin、ymax设置x、y轴的范围

xticks()

yticks()

ticks(刻度数值)、labels(刻度名称)、fontdict设置x、y轴的刻度大小
grid()

b(有无网格线)、which(主/次网格线)、axis(x、y轴网格线,取值主要有‘x’、‘y’、‘both’)、color、linestyle、linewidth、alpha(透明度)

设置x、y轴的主/次网格线
legend()loc(大致位置,比如左上角)、bbox_to_anchor(图例的锚点具体坐标位置)控制图例显示

4、常见二维图表的绘制函数

函数主要参数说明图表类型
plot()x、y、color、linewidth、marker(标记类型)、markersize(标记大小、label(线条标签)、markerfacecolor(标记填充色)折线图、带标记的折线图
scatter()x、y、s(散点图大小)、color、marker(散点类型)、markerfacecolor(标记填充色)散点图、气泡图
bar()

x、y、width、align(柱形位置)、color、edgecolor(柱子边框颜色)

柱状图、堆积柱状图
pie()x、colors(要求颜色列表)、labels(标签)、autopct(百分比文本的格式)、labeldistance(控制标签的位置,默认值为1.1)、pctdistance(控制百分比标签距离饼图中心的距离,默认值0.6)、radius(控制饼图的半径)饼图
hist()x、bins(箱数)、range(设定直方图的x轴的最小值和最大值)、density(是否为频率统计)、align(柱形位置)、label(标签)、color、edgecolor统计直方图
boxplot()x、notch(有无凹槽)、sym(散点类型)、vert(水平或竖直方向,布尔型)、widths、labels(标签)、patch_artist(是否填充箱体颜色)箱型图
text()x、y、s(设置标记值字符串)、ha(水平对齐)、va(垂直对齐)、fontsize给图形生成数据标记

5、函数常用参数取值说明

部分的参数的取值说明:

参数作用取值类型取值
figsize设置图形大小二维数值元组型形如(1,1)、(1,1)等
dip设置图形分辨率数值型
fontsize设置字体大小数值型
linestyle设置线(网格线、折线等)的类型字符串实线(' - ')、虚线(' -- ')、点线(' :  ')、点划线(' -. ')
marker设置数据点的标记样式字符串圆点(o)、方块(s,square)、上三角(^)、菱形(D, diamond)、星状(*)等
alpha设置透明度浮点型取值范围为 0(完全透明)到 1(完全不透明)
xlim、ylim设置 X 、Y 轴范围数值型元组形如 (0, 10)(-5, 5) 等
xticks、yticks标记 X 、Y 轴刻度位置数值型列表形如 [0, 2, 4, 6, 8]
loc设置图例位置字符串'upper right''lower left''best' 等
bbox_to_anchor设置图例的锚点位置数值型元组形如 (1.05, 1)
align控制条形图或箱线图的对齐方式字符串'center'(默认,居中对齐)、'edge'(沿边缘对齐)、None(并排放置)
vert是否将箱线图垂直摆放布尔值True(默认,垂直摆放)、False(水平摆放)
sym指定箱线图中异常点的形状字符串默认为 '+'(加号),也可以是其他标记符号(如 'o''*''r^' 等)
va控制文本的垂直对齐方式字符串'center'(默认,居中对齐)、'top'(顶部对齐)、'bottom'(底部对齐)、'baseline'(基线对齐)
ha控制文本的水平对齐方式字符串'center'(默认,居中对齐)、'left'(左对齐)、'right'(右对齐)
rotation设置标签显示方向(竖直或水平)数值型取值为0或1
autopct自动计算饼图每个扇形的百分比,要设置显示格式字符串

只显示一位小数百分比:'%1.1f%%'

二、常见图表绘制演示

进行可视化前,除了导入必要的库以外,还需要设置中文字体,避免图形中显示中文字体时出现乱码的情况。

import pandas as pd
import matplotlib.pyplot as plt# 设置字体,避免图形中显示中文字体时出现乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']# 创建示例数据
data = {'Category': ['A', 'B', 'C', 'D', 'E'],'Value1': [10, 20, 35, 50, 100],'Value2': [5, 15, 18, 35, 45],'Value3': [12, 22, 17, 27, 32],'index1': [2, 4, 6, 8, 10]
}
df = pd.DataFrame(data)

:后面所有代码都包含上述代码。 

(一)折线图

1.1 单个折线图

需要注意的是,plt.plot()并不接受x和y作为关键字参数,只接受位置参数,因此,“x=df['index1'], y=df['Value1']”这样写会报错。

# 折线图
plt.plot(df['index1'], df['Value1'], linestyle='-', label='v1')    # 注意要使用位置参数传入x、yplt.title('示例1')
plt.legend()  # 显示图例‘v1’
plt.show()

如果需要调横坐标或纵坐标的刻度范围,可以使用plt.xlim([xmin, xmax])、plt.ylim([ymin, ymax])或plt.axis([xmin, xmax, ymin, ymax]),其中plt.axis()可以一次性修改x、y坐标的刻度范围,演示如下:

# 折线图
plt.plot(df['index1'], df['Value1'], label='v1') # y轴坐标刻度范围改为[0, 200]
plt.ylim([0,200])plt.title('示例1')
plt.legend(loc='upper left')  # 显示图例‘v1’
plt.show()

如果,需要在y轴刻度上显示出75、180、200的点位,并将该点标记为A、B、'200'这三个刻度标签,则可以使用plt.yticks()方法。注意的是,其中的ticks参数的数值只能是y坐标轴的刻度范围内的值(比如示例的y坐标刻度范围是0~200,则ticks参数里的值不能大于200),演示如下:

# 折线图
plt.plot(df['index1'], df['Value1'], label='v1') # y轴坐标刻度范围改为[0, 200]
plt.ylim([0,200])
# 显示y坐标轴的特定点位
plt.yticks(ticks=[77, 100, 200], labels=['A', 'B','200'])plt.title('示例1')
plt.legend(loc='upper left')  # 显示图例‘v1’
plt.show()

1.2 多个折线(在同一张图,且同一纵轴)

plt.plot(df['index1'], df['Value1'], label='v1')  # 绘制 Value1 对应的折线
plt.plot(df['index1'], df['Value2'], label='v2')  # 绘制 Value2 对应的折线plt.title('示例2')
plt.legend(loc='best')  # 显示图例'v1'和'v2'
plt.show()

1.3 “双纵坐标”折线图

有时候两条折线的的纵坐标尺度相差太大,导致另一条在该统一的y轴刻度范围变化幅度不大,甚至显示成了一条直线。可以使用“双纵坐标轴”绘制,演示如下:

# 创建一个含1*1张子图的图形。看不懂这行代码可以先忽略,后面会讲到。
fig, ax1 = plt.subplots(1, 1, figsize=(8,5))    # 设置图形窗口(即容器)的大小为5*8ax1.plot(df['index1'], df['Value1'], label='v1')  # 绘制 Value1 对应的折线# 创建ax1子图第二个纵坐标轴 ax2
ax2 = ax1.twinx()
ax2.plot(df['index1'], df['Value2'], label='v2', color='red')  # 绘制 Value2 对应的折线ax1.set_title('示例2')
ax1.legend(loc='upper left')  # 显示图例'v1'
ax2.legend(loc='upper left', bbox_to_anchor=(0,0.9))  # 显示图例'v2',并设置具体位置,避免与'v1'位置重叠而只显示一个图例
plt.show()

1.4 带数据标记的折线图

演示如下:

# 绘制添加标记线
plt.plot(df['index1'], df['Value1'], linestyle='-', marker='*', label='v1', markersize=10) 
# 绘制不带标记的线
plt.plot(df['index1'], df['Value2'], linestyle='--', marker=None, label='v2')# 添加数据值标记
for i in range(len(df)):plt.text(df['index1'][i], df['Value1'][i], s=str(df['Value1'][i]), ha='center', va='bottom', fontsize=12)   # 显示数据值plt.title('带数据标记的折线图')
plt.legend()  # 显示图例‘v1’
plt.grid(True, axis='both', alpha=0.3)    #显示网格线
plt.show()

 (二)在一个图形(figure)中绘制多张子图

图形(figure)作为一个容器,包含大标题和子图(至少一张)等元素,而其子图又含有子图自己的元素(如子图的标题,子图的横纵坐标,子图的图例等)。下面演示如何在一个图形(figure)中绘制多张子图,来理解这些概念。

# 创建一个含2*2张子图的图形fig。其每张子图(对象)用ax1[0,0],ax1[0,1],...表示。若只有一张图,可以直接用ax1表示子图。
fig, ax1 = plt.subplots(2, 2, figsize=(10,9))    # 设置图形(即容器)的大小为9*10# 设置图形分辨率、可忽略
fig.dpi = 100# 绘制子图1,柱状图
ax1[0,0].bar(df['index1'], df['Value1'], label='v1') 
ax1[0,0].set_title('图1', color='red')
ax1[0,0].legend()
ax1[0,0].set_xlabel('index1')
ax1[0,0].set_ylabel('Value1')# 绘制子图4,折线图
ax1[1,1].plot(df['index1'], df['Value1'], label='v1') 
ax1[1,1].plot(df['index1'], df['Value2'], label='v2') 
ax1[1,1].set_title('图4', color='red')
ax1[1,1].legend()
ax1[1,1].set_xlabel('index1')
ax1[1,1].set_ylabel('y 值')# 图2、图3我就不绘制了。图1、图4做了演示。fig.suptitle('总标题', color='green', fontsize=20)   # 设置总标题
fig.tight_layout()    # 自动调整子图的布局,使得元素之间不会重叠
plt.show()

 (三)散点图

3.1 简单的散点图

plt.scatter(df['index1'], df['Value1'], color='green', label='v1')
plt.scatter(df['index1'], df['Value2'], color='red', label='v2')plt.title('散点图', color='blue')
plt.xlabel('index1')
plt.ylabel('value')
plt.legend()    # 显示图例
plt.show()

3.2 带数据标记的散点图

plt.scatter(df['index1'], df['Value1'], color='green', label='v1', marker='^')
plt.scatter(df['index1'], df['Value2'], color='red', label='v2')# 使用text()添加给‘Value1’标记数值
for i in range(len(df)):plt.text(df['index1'][i], df['Value1'][i], s=str(df['Value1'][i]), ha='center', va='bottom')# 使用text()添加给‘Value2’标记数值
for i in range(len(df)):plt.text(df['index1'][i], df['Value2'][i], s=str(df['Value2'][i]), ha='center', va='bottom')plt.title('带数据标记的散点图', color='blue')
plt.xlabel('index1')
plt.ylabel('value', rotation=1)
plt.legend()    # 显示图例
plt.show()

(四)柱状图(竖直型)

水平柱状图就不做演示了,因为我觉得平时用python进行数据分析时,用竖直型就够了,避免与竖直型的代码搞混淆,真要用到水平柱状图可以用其他工具(比如Excel或其他专业绘图工具)。

4.1 带数据标记的柱状图

plt.bar(df['Category'], df['Value1'], width=0.5, label='v1', color='red')plt.title('简单的柱状图')
plt.xlabel('类别', fontsize=9)
plt.ylabel('value', fontsize=9, rotation=1)
plt.legend(loc='upper left')
plt.show()

4.2 并列柱状图(带数据标记)

也叫分组柱状图。在同一个坐标系中绘制多组数据时,可以通过多次调用 plt.bar() ,并调整每组柱状图的位置,以避免它们重叠。通常,我们会通过偏移每组柱子的位置来实现并排显示。

关键步骤:

  1. 计算柱子的位置(难点):每组类别的 x 轴坐标需要调整,使得三根柱子能够并排显示。

  2. 设置柱子的宽度:确保柱子不会重叠,并留有适当间距。

  3. 绘制多个柱状图:使用 plt.bar() 分别绘制每一组柱子,并调整它们的 x 轴位置。

两组数据示例(带数据标记):

import numpy as np# 定义柱子的宽度
width=0.4# 获取规律的x坐标,用于设置柱子的位置
x = np.arange(len(df))    # 输出[0, 1, 2, 3, 4]# 绘制两组柱状图
bar1 = plt.bar(x-width/2, df['Value1'], width=width, label='v1类', color='orange', edgecolor='black')    # 左移width/2。其中x-width/2为每根柱子底部中心点的横坐标
bar2 = plt.bar(x+width/2, df['Value2'], width=width, label='v2类', color='skyblue', edgecolor='black')    # 右移width/2。其中x+width/2为每根柱子底部中心点的横坐标# 这里有点特别,bar.get_x()获取的是每根柱子底部左下角的横坐标,而不是中心点了。
# 给bar1添加数据标记
for bar in bar1:plt.text(bar.get_x()+bar.get_width()/2, bar.get_height(), s=str(bar.get_height()), ha='center', va='bottom')# 给bar2添加数据标记
for bar in bar2:plt.text(bar.get_x()+bar.get_width()/2, bar.get_height(), s=str(bar.get_height()), ha='center', va='bottom')# 将中心坐标标签由[0, 1, 2, 3, 4]更改为['A', 'B', 'C', 'D', 'E']
plt.xticks(ticks=x, labels=df['Category'])plt.grid(axis='y', linestyle='--', alpha=0.5)   # 显示网格线
plt.title('两组柱状图(带数据标记)', fontsize=13)
plt.ylabel('value值', rotation=1)
plt.xlabel('类别')
plt.legend(loc='upper left')
plt.show()

三组数据(带数据标记),难点也是在于计算柱子的坐标,示例:

import numpy as npplt.figure(figsize=(10, 5))
x = np.arange(len(df))
width = 0.25bar1 = plt.bar(x-width, df['Value1'], width=width, label='v1', color='skyblue', edgecolor='black')    # 左移width
bar2 = plt.bar(x, df['Value2'], width=width, label='v2', color='red', edgecolor='black')    # 不偏移
bar3 = plt.bar(x+width, df['Value3'], width=width, label='v3', color='orange', edgecolor='black')   # 右移widthfor bar in bar1:plt.text(bar.get_x()+width/2, bar.get_height(), s=str(bar.get_height()), va='bottom', ha='center')for bar in bar2:plt.text(bar.get_x()+width/2, bar.get_height(), s=str(bar.get_height()), va='bottom', ha='center')for bar in bar3:plt.text(bar.get_x()+width/2, bar.get_height(), s=str(bar.get_height()), va='bottom', ha='center')# 将中心坐标标签由[0, 1, 2, 3, 4]更改为['A', 'B', 'C', 'D', 'E']
plt.xticks(ticks=x, labels=df['Category'])plt.grid(axis='y', linestyle='--', alpha=0.5)   # 显示网格线
plt.title('三组柱状图(带数据标记)', fontsize=13)
plt.ylabel('value值', rotation=1)
plt.xlabel('类别')
plt.legend(loc='upper left')
plt.show()

4.3 堆积柱状图

堆积直方图的优点:

  1. 适用于比较多个类别在相同区间内的数量或频率。
  2. 通过堆叠显示每个类别的贡献,可以更直观地了解各类别在总数中的占比。

演示如下:

import numpy as npx = np.arange(len(df['Category']))  # x轴位置# 绘制第一类数据
plt.bar(x, df['Value1'], width=0.4, label='Category 1', color='b')# 绘制第二类数据,堆积在第一类数据上(bottom参数表示当前柱子数据堆叠的起始位置,默认为0,即高度为0的位置开始绘制)
plt.bar(x, df['Value2'], width=0.4, bottom=df['Value1'], label='Category 2', color='g')# 绘制第三类数据,堆积在前两类数据上
plt.bar(x, df['Value3'], width=0.4, bottom=df['Value1'] + df['Value2'], label='Category 3', color='r')plt.xlabel('类别')
plt.ylabel('Value')
plt.title('堆积柱状图示例')
plt.xticks(x, labels=df['Category'])  # 设置x轴标签
plt.legend()
plt.show()

(五)饼图

演示如下:

# pie()会自动计算df['Value1']的占比,不用手动计算
plt.pie(df['Value1'], labels=df['Category'], autopct='%0.2f%%', labeldistance=1.05)plt.title('饼图')
plt.show()

(六)统计直方图

统计直方图主要有两种:频率(分布)直方图、概率密度直方图。

两者的区别如下:

特性频率直方图概率密度直方图
定义显示每个区间内数据的频数(数据点的数量)显示每个区间内数据的相对概率密度(每个柱子的总面积为 1)
总面积总面积(所有柱子的高度总和)等于数据点的总数总面积等于 1(归一化后)
计算方式频数 / 区间宽度(没有归一化)(频数 / 总数据量) / 区间宽度,即归一化
用途适合展示数据集的实际分布和频数情况适合展示数据的概率分布,便于进行统计分析和比较不同数据集的分布
典型应用展示单一数据集的实际频数分布用于概率密度估计、正态分布拟合等,需要考虑数据相对概率分布的情况

频率直方图:

import numpy as np# 生成示例数据(1000个正态分布的数据)
data = np.random.randn(1000)# 绘制直方图
plt.hist(data, bins=50, color='red', edgecolor='black', alpha=0.7, label='数据分布')plt.title('频率直方图示例')
plt.xlabel('数据值')
plt.ylabel('频数')plt.legend()
plt.show()

概率密度直方图(只要设置参数 density=True即可):

# 绘制归一化(概率密度)直方图
plt.hist(data, bins=30, color='skyblue', edgecolor='black', alpha=0.7, density=True, label='概率密度')# 添加标题和标签
plt.title('归一化(概率密度)直方图示例')
plt.xlabel('数据值')
plt.ylabel('频数')plt.legend()
plt.show()

(七)箱线图

import matplotlib.pyplot as plt
import numpy as np# 生成示例数据(1000个正态分布的数据)
data = np.random.randn(1000)plt.boxplot(data, patch_artist=True)plt.title('箱型图示例')
plt.ylabel('数据值')
plt.show()

    # 文章如有错误,欢迎大家指正,我们下期文章见。

    相关文章:

    Python数据可视化(够用版):懂基础 + 专业的图表抛给Tableau等专业绘图工具

    我先说说文章标题中的“够用版”啥意思,为什么这么写。 按照我个人观点,在使用Python进行数据分析时,我们有时候肯定要结合到图表去进行分析,去直观展现数据的规律和特定,那么我们肯定要做一些简单的可视化&#xff0…...

    1.21学习

    misc buuctf-爱因斯坦 下载附件后是一个图片,用stegsolve查看一下,各个色都没有问题,然后看一下数据分析,除此之外无其他信息,再看看图片属性,不知道是啥,用随波逐流进行binwalk文件提取然后得…...

    SoftGNSS软件接收机源码阅读(一)程序简介、运行调试、执行流程

    原始 Markdown文档、Visio流程图、XMind思维导图见:https://github.com/LiZhengXiao99/Navigation-Learning 文章目录 一、softGNSS 简介1、概述2、相关工作3、我用 softGNSS 做的事4、文件结构5、程序执行流程图 二、程序使用1、射频前端2、参数设置3、处理开源数据…...

    Spring Boot AOP实现动态数据脱敏

    依赖&配置 <!-- Spring Boot AOP起步依赖 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>/*** Author: 说淑人* Date: 2025/1/18 23:03* Desc…...

    Leetcode刷题-二分查找

    灵神的二分视频&#xff1a;二分查找 红蓝染色法_哔哩哔哩_bilibili 34 class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:right len(nums) - 1left 0res [-1,-1]mid int((right left)/2)while right > left:if nums[mid] < …...

    凭证Account Assignment的校验(FAGL_VALIDATE)

    本文主要介绍在S4 HANA OP中凭证Account Assignment的校验配置。具体请参照如下内容&#xff1a; 目录 1. 定义Account Assignment校验策略(FAGL_VALIDATE) 1.1 Derivation Rule 1.2 Assignment 1.3 Initialize 1.4 Enhancement 2. 分配Account Assignment校验策略给公司…...

    【20】Word:小许-质量管理-论文❗

    目录 题目​ NO1.2.3.4.5 NO6.7 NO8 NO9 NO10.11 题目 NO1.2.3.4.5 另存为“Word.docx”文件在考生文件夹下&#xff0c;F12Fn是另存为的作用布局→页面设置对话框→纸张&#xff1a;大小A4→页边距&#xff1a;上下左右不连续ctrl选择除表格外的所有内容→开始→字体对…...

    二十八、Qos服务质量

    Qos服务质量 一、产生原因 Resources也不是万能的,使用一段时间后,资源总量可能会超过接节点配置。 根据这个情况,我们可以设置,清除资源。给pod配置,按顺序删除 二、服务质量QoS分类 Guaranteed:最高服务质量(保证),当宿主机内存不够时,会先kill掉QoS为BestEffort…...

    Flutter 改完安卓 applicationId 后App 闪退问题。

    一、问题 当我们项目创建完&#xff0c;想 build.gradle 改 applicationId 的时候&#xff0c;再次执行的时候可能会出现 app 闪退问题&#xff0c; 控制台不显示任何错误提示 也不出现 Exit 停止运行的情况。&#xff08;像下方这样&#xff0c; 而 app 只是在模拟器中一闪而…...

    es 3期 第25节-运用Rollup减少数据存储

    #### 1.Elasticsearch是数据库&#xff0c;不是普通的Java应用程序&#xff0c;传统数据库需要的硬件资源同样需要&#xff0c;提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库&#xff0c;不是关系型数据库&#xff0c;不具备严格的ACID事务特性&#xff…...

    小菜鸟系统学习Python第三天

    1.优先级问题: 结论: 幂运算>正负号>加减乘除和整除>比较运算符>逻辑运算符 2.三元运算符 3.assert断言:抛出AssertionError异常 4.for循环 4. 5.break和continue...

    七.网络模型

    最小(支撑)树问题 最小部分树求解&#xff1a; 破圈法&#xff1a;任取一圈&#xff0c;去掉圈中最长边&#xff0c;直到无圈&#xff1b; 加边法&#xff1a;取图G的n个孤立点&#xff5b;v1&#xff0c;v2&#xff0c;…&#xff0c; vn }作为一个支撑图&#xff0c;从最短…...

    1170 Safari Park (25)

    A safari park&#xff08;野生动物园&#xff09;has K species of animals, and is divided into N regions. The managers hope to spread the animals to all the regions, but not the same animals in the two neighboring regions. Of course, they also realize that t…...

    数字图像处理:实验五

    uu们&#xff01;大家好&#xff0c;欢迎来到数字图像处理第五章节内容的学习&#xff0c;在本章中有关空间滤波的理论学习是十分重要的&#xff0c;所以建议大家要去用心的学习本章&#xff0c;在之后的传感器的相关图像采集时&#xff0c;不可避免的会有噪声等的影响&#xf…...

    2024我在csdn走过的路

    自我介绍 ✏️博客名✏️&#xff1a; zy_destiny &#x1f338;粉丝数&#x1f338;&#xff1a; 1万 &#x1f33f;擅长领域&#x1f33f;&#xff1a; 人工智能 &#x1f440;欢迎访问&#x1f440;&#xff1a; 我的主页 我的2024 回顾下2024年&#xff0c;起点要从去年写…...

    网络安全等级保护基本要求——等保二级

    《信息安全技术网络安全等级保护基本要求》GB/T22239-2019 7.1 安全通用要求 7.1.1 安全物理环境 7.1.1.1 物理位置选择 本项要求包括&#xff1a; a) 机房场地应选择在具有防震、防风和防雨等能力的建筑内;b) 机房场地应避免设在建筑物的顶层或地下室&#xff0c;否则应加…...

    了解 .mgJSON 文件

    .mgJSON &#xff08;Motion Graphics JSON&#xff09;是一个基于标准 JSON 格式的文件扩展名&#xff0c;专门用于存储和交换与动态图形、动画和多媒体应用相关的数据。该格式支持静态和动态数据流&#xff0c;能够精确描述动画、物体变换、图形效果等。 .mgJSON 文件通过层级…...

    django使用踩坑经历

    DRF 使用drf获取序列化后的id visitor_serializer VisitorSaveSerializer(data{…}) if visitor_serializer.is_valid():visitor visitor_serializer.save() visitor_id visitor.pkpostgrepsql踩坑 django使用postgrepsql&#xff0c;使用聚合函数如:sum 等&#xff0c;被…...

    【数据分享】1929-2024年全球站点的逐年最低气温数据(Shp\Excel\免费获取)

    气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff01;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2024年全球气象站点…...

    Leetcode:2239

    1&#xff0c;题目 2&#xff0c;思路 循环遍历满足条件就记录&#xff0c;最后返回结果值 3&#xff0c;代码 public class Leetcode2239 {public static void main(String[] args) {System.out.println(new Solution2239().findClosestNumber(new int[]{-4, -2, 1, 4, 8})…...

    SpringBoot-17-MyBatis动态SQL标签之常用标签

    文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

    网络编程(Modbus进阶)

    思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

    linux之kylin系统nginx的安装

    一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

    DockerHub与私有镜像仓库在容器化中的应用与管理

    哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

    剑指offer20_链表中环的入口节点

    链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

    Android15默认授权浮窗权限

    我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

    什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

    文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

    2025季度云服务器排行榜

    在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

    人机融合智能 | “人智交互”跨学科新领域

    本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

    BLEU评分:机器翻译质量评估的黄金标准

    BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...