一、Matplotlib绘制图形

我们已经学习过了 NumPy 的统计分析,数据的各项指标都可以以真实的数据提供出来, 有的同学可能有疑问?

我们为什么要进行可视化?而可视化在数据分析中又占什么样的地位?我们之前大致说过,可视化可以将我们的数据更加直观的表现出来,方便我们得到数据分析的结论,那么还有什么作用吗?那么我们一起来一下这一组数据

观察上面这一组数据,并没有发现什么规律,但是我们可以对其进行统计指标计算,来得到:

而观察统计指标中的均值、标准差,会发现整个的 x_ *、y __ * 数据的均值、标准差都是 基本一样的,那么到底可不可以得到,整个 x_ * 数据的规律是一样的?整个 y_ * 数据的规律 是一样的?

那么我们对该数据进行可视化,来绘制图形来查看该数据的分布情况,会发现:

而观察数据的分布散点,可以得到:该数据的分布规律并不相同。那么根据指标所得到 的规律只是显示着该数据的某些指标相同,但是真实的规律还得需要图形的支撑,不然不足 以提供强大的说服力

那么到底如何实现图像可视化?接下来我们一起来学习 Matplotlib 可视化库

二、Matplotlib 数据可视化基础

对 Matplotlib 认识

Matplotlib 是一个 Python 的 2D 绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形

Matplotlib 绘图流程

1、创建画布与创建子图

第一部分主要作用是构建出一张空白的画布,并可以选择是否将整个画布划分为多个部 分,方便在同一幅图上绘制多个图形的情况。最简单的绘图可以省略第一部分,而后直接在默认的画布上进行图形绘制

函数名称 函数作用
plt.figure 创建一个空白画布,可以指定画布大小,像素
figure.add_subplot 创建并选中子图,可以指定子图的行数,列数,与选中图片编号
plt.subplots_adjust 调整子图之间的间距,wspace 为调整宽度,hspace 为调整高度

2、添加画布内容

第二部分是绘图的主体部分,其中添加标题,坐标轴名称,绘制图形等步骤是并列的, 没有先后顺序,可以先绘制图形,也可以先添加各类标签,但是添加图例一定要在绘制图形之后

函数名称 函数作用
plt.title 在当前图形中添加标题,可以指定标题的名称、位置、颜色、字体大小等参数
plt.xlabel 在当前图形中添加 x 轴名称,可以指定位置、颜色、字体大小等参数
plt.ylabel 在当前图形中添加 y 轴名称,可以指定位置、颜色、字体大小等参数
plt.xlim 指定当前图形 x 轴的范围,只能确定一个数值区间,而无法使用字符串标识
plt.ylim 指定当前图形 y 轴的范围,只能确定一个数值区间,而无法使用字符串标识
plt.xticks 指定 x 轴刻度的数目与取值
plt.yticks 指定 y 轴刻度的数目与取值
plt.legend 指定当前图形的图例,可以指定图例的大小、位置、标签

3、存与展示图形

第三部分主要用于保存和显示图形

函数名称 函数作用
plt.savafig 保存绘制的图片,可以指定图片的分辨率、边缘的颜色等参数
plt.show 在本机显示图形

现在人们对于旅游、出行越来越热衷,一旦出现周末、小假期,基本都会出行旅游,所以对于天气的依赖越来越重要,以 xx 城市下一周天气温度走势为例,来理解绘图三部曲, 以下为某城市下一周天气

温度表:

​ 某城市下一周天气温度表

日期 周一 周二 周三 周四 周五 周六 周日
xx 城市天气温度(℃) 15 20 22 23 20 18 16

以下为绘制出的效果图:

代码实现:

# 导包
import matplotlib.pyplot as plt
import numpy as np# 1、创建画布
# figsize : 画布大小,元组形式,可以给定画布的宽、高
# dpi :像素大小
# 返回值:画布对象
plt.figure()# 2、绘图及修饰
# 以下一周某城市的天气温度走势 来理解绘图流程
# 折线图
# 折线图 ---要素:点  --->坐标(x,y)
# (x1,y1) (x2,y2) ...(xn,yn) ---n个点的坐标
# 注意:在绘制折线图时,要求单独传入横坐标、纵坐标,绘制的时候会一一对应
#  准备 横轴数组 ---周一、周二、....、周日
# 注意:如果横轴为中文,绘制的时候,需要用序号来代替中文,后续再替换过来
x = np.arange(1, 8)
#  准备 纵轴数组
y = np.array([15, 20, 22, 23, 20, 18, 16])# 绘制折线图
plt.plot(x, y)# 3、图形展示
plt.show()

三、折线图绘制

折线图(line chart)是一种将数据点按照顺序连接起来的图形。可以看作是将散点图,按照 x 轴坐标顺序连接起来的图形

折线图的主要功能是查看因变量y随着自变量x改变的趋势,最适合用于显示随时间(根 据常用比例设置)而变化的连续数据。同时还可以看出数量的差异,增长趋势的变化

可以使用 plt.pyplot 绘制折线图

matplotlib.pyplot.plot(*args, **kwargs)

plot 函数在官方文档的语法中只要求填入不定长参数,实际可以填入的主要参数主要

如下:

参数名称 说明
x,y 接收 array,表示 x 轴和 y 轴对应的数据。无默认
color 接收特定 string,指定线条的颜色。默认为 None
linestyle 接收特定 string。指定线条类型,默认为“-“
marker 接收特定 string。表示绘制的点的类型。默认为 None
alpha 接收 0-1 的小数。表示点的透明度。默认为 None

在 pyplot 中几乎所有的默认属性都是可以控制的,例如视图窗口大小以及每英寸点数、 线条宽度、颜色和样式、坐标轴、坐标和网格属性、文本、字体等

1、线条的常用参数的取值:

rc参数名称 解释 取值
lines.linewidth 线条宽度 取 0-10 之间的数值,默认为 1.5
lines.linestyle 线条样式 可取“-”,“–”,“-.”,“:”四种,默认为“-”
lines.marker 线条上点的形状 可取“o”,“D”,“h”,“.”,“,” ,“S”等 20 种,默认为 None
lines.markersize 点的大小 取 0-10 之间的数值,默认为 1

2、常用线条样式解释:

linestyle 取值 意义
- 实线
长虚线
-. 点线
: 短虚线

3、点的样式解释:

marker 取值 意义
‘o’ 圆圈
‘D’ 菱形
‘h’ 六边形 1
‘H’ 六边形 2
‘-’ 水平线
‘8’ 八边形
‘p’ 五边形
‘,’ 像素
‘+’ 加号
‘None’
‘.’
‘s’ 正方形
‘*’ 星号
‘d’ 小菱形
‘v’ 一角朝下的三角形
‘<’ 一角朝左的三角形
‘>’ 一角朝右的三角形
‘^’ 一角朝上的三角形
‘\’ 竖线
‘x’ X

4、常用颜色说明

颜色缩写 代表的颜色
b 蓝色
g 绿色
r 红色
c 青色
m 品红
y 黄色
k 黑色
w 白色

另外需要注意:

由于默认的 pyplot 字体并不支持中文字符的显示,因此需要通过设置 font.sans-serif 参数改变绘图时的字体,使得图形可以正常显示中文,同时,由于更改字体后,会导致坐标 轴中的部分字符无法显示,因此需要同时更改 axes.unicode_minus 参数

支持中文代码示例:

# 默认不支持中文 ---修改RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
# 增加字体之后变得不支持负号,需要修改RC参数让其继续支持负号
plt.rcParams['axes.unicode_minus'] = False

如果需要更改画布颜色、坐标轴字体颜色、坐标轴、边框颜色等,也可以去更改 rcParams 参数

代码示例:

# 颜色对照表
# https://tool.oschina.net/commons?type=3
# 如果需要更改画布颜色、坐标轴字体颜色、坐标轴、边框颜色等,也可以去更改 rcParams 参数
# x轴字体颜色
plt.rcParams['xtick.color'] = '#FFFFFF'# y轴字体颜色
plt.rcParams['ytick.color'] = '#FFFFFF'# 背景颜色
plt.rcParams['axes.facecolor'] = '#0D0434'# 边框颜色
plt.rcParams['axes.edgecolor'] = '#FFFFFF'# 保存的画布的颜色
plt.rcParams['savefig.facecolor'] = '#0D0434'

更多设置可查看:matplotlibrc 文件

以 xx 城市、yy 城市下一周天气温度走势为例,绘制折线图,以下为 xx 城市、yy 城市

下一周天气温度表:

​ xx 城市和 yy 城市下一周天气温度表

日期 周一 周二 周三 周四 周五 周六 周日
xx 城市天气温度(℃) 15 20 22 23 20 18 16
yy 城市天 气温度(℃) -10 -8 -12 -10 -8 -6 -1

以下为绘制出的效果图:

代码实现:

# 导包
import matplotlib.pyplot as plt
import numpy as np# 1、创建画布
# figsize : 画布大小,元组形式,可以给定画布的宽、高
# dpi :像素大小
# 返回值:画布对象
plt.figure()
# 默认不支持中文 ---修改RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
# 增加字体之后变得不支持负号,需要修改RC参数让其继续支持负号
plt.rcParams['axes.unicode_minus'] = False# 如果需要更改画布颜色、坐标轴字体颜色、坐标轴、边框颜色等,也可以去更改 rcParams 参数
# x轴字体颜色
plt.rcParams['xtick.color'] = '#FFFFFF'# y轴字体颜色
plt.rcParams['ytick.color'] = '#FFFFFF'# 背景颜色
plt.rcParams['axes.facecolor'] = '#045332'# 边框颜色
plt.rcParams['axes.edgecolor'] = '#FFFFFF'# 保存的画布的颜色
plt.rcParams['savefig.facecolor'] = '#0D0434'# 2、绘图及修饰
# 以下一周某城市的天气温度走势 来理解绘图流程
# 折线图
# 折线图 ---要素:点  --->坐标(x,y)
# (x1,y1) (x2,y2) ...(xn,yn) ---n个点的坐标
# 注意:在绘制折线图时,要求单独传入横坐标、纵坐标,绘制的时候会一一对应
#  准备 横轴数组 ---周一、周二、....、周日
# 注意:如果横轴为中文,绘制的时候,需要用序号来代替中文,后续再替换过来
x = np.arange(1, 8)
#  准备 纵轴数组
y1 = np.array([15, 20, 22, 23, 20, 18, 16])y2 = np.array([-10, -8, -12, -10, -8, -6, 1])# 绘制折线图
# 如果想要一张图中绘制多条折线,那么只需要多绘制几次就可以了
# color : 线的颜色
# linestyle : 线的样式
# linewidth: 线的宽度
# marker :点的样式
# markersize :点的大小
# markerfacecolor:点的填充颜色
# markeredgecolor:点的边缘颜色
plt.plot(x, y1, color='r', linestyle=':', linewidth=1.2, marker="*", markersize=7, markerfacecolor='b',markeredgecolor='g')
plt.plot(x, y2, color='k', linestyle='-.', linewidth=1.2, marker="d", markersize=7, markerfacecolor='r',markeredgecolor='r')# 增加标题
plt.title('下一周广州、哈尔滨天气温度走势')# 设置横轴名称
plt.xlabel('日期')# 设置纵轴名称
plt.ylabel('温度(℃ )')# 修改横轴刻度
# 注意:如果是需要将刻度修改为中文,传递2个参数
# 参数1 : 序号
# 参数2 :设置的中文刻度
xticks = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
plt.xticks(x, xticks)# 修改纵轴刻度
# 注意:如果只是重新设置刻度范围,只需要传递1个参数
# 参数:新的刻度范围
yticks = np.arange(-12, 33, 3)
plt.yticks(yticks)# 增加图例
# loc :表示 图例的设置位置
plt.legend(['广州温度', '哈尔滨温度'], loc=0)# 进行标注
# plt.text --->每次只能标记一个点
# 循环标注
for i, j in zip(x, y1):# 参数1 : 标注位置的横坐标# 参数2 : 标注位置的纵坐标# 参数3 : 标注的内容,字符串plt.text(i, j + 1, '%d℃' % j, horizontalalignment='center')for i, j in zip(x, y2):# 参数1 : 标注位置的横坐标# 参数2 : 标注位置的纵坐标# 参数3 : 标注的内容,字符串plt.text(i, j + 1, '%d℃' % j, horizontalalignment='center')# 保存图片
plt.savefig('./下一周广州、哈尔滨天气温度走势.png')# 3、图形展示
plt.show()

折线图任务:

绘制 2000-2017 各产业与行业的国民生产总值折线图

通过绘制 2000-2017 各产业与行业的国民生产总值折线图,分别能够发现我国经济各产业与各行业增长趋势

以下为绘制效果展示:

代码实现:

import matplotlib.pyplot as plt
import numpy as np# 绘制2000-2017年各产业、行业季度生产增加总值的发展趋势折线图# 1、加载数据
fp = np.load('./国民经济核算季度数据.npz', allow_pickle=True)
# # 遍历
# for k in fp:
#     print(k)
#  获取保存的数组
columns = fp['columns']
values = fp['values']print('columns:\n', columns)
print('values:\n', values)# 2、绘制图形
#  创建画布
# figsize=(40, 20), dpi=80
# 返回画布对象
fig = plt.figure()
# 默认不支持中文 ---修改RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
# 增加字体之后变得不支持负号,需要修改RC参数让其继续支持负号
plt.rcParams['axes.unicode_minus'] = False# 设置子图间距
# wspace=None,  ----> 子图之间的宽度间距 ---设置为[0,1]小数  --->子图宽度的占比
# hspace=None   ----> 子图之间的高度间距 ---设置为[0,1]小数  --->子图高度的占比
plt.subplots_adjust(hspace=0.2)# 绘制图形及修饰
# 创建子图1
fig.add_subplot(2, 1, 1)# 横轴  ---时间 --序号
x = np.arange(values.shape[0])# 纵轴 --各个产业的增加总值
y = values[:, 3:6]
# y1 = values[:, 3]
# y2 = values[:, 4]
# y3 = values[:, 5]
#
# # 绘图
plt.plot(x, y)
# 注意:此时使用一个横轴,对应多列数据,拿出每一列与横轴一一对应去绘制折线图
# plt.plot(x, y1)
# plt.plot(x, y2)
# plt.plot(x, y3)# 增加标题
plt.title('2000-2017年各个产业、行业增加总值')# 纵轴名称
plt.ylabel('生产总值(亿元)')# 从columns 中获取
legend = [tmp[:4] for tmp in columns[3:6]]
# 增加图例
plt.legend(legend, loc=0, fontsize=5)# 修改横轴刻度
# xticks = values[:, 1]
# 参数rotation=45 -->旋转45°
# plt.xticks(x[::4], xticks[::4], rotation=45)# 创建子图2
fig.add_subplot(2, 1, 2)# 横轴  ---时间 --序号
x = np.arange(values.shape[0])# 纵轴 --各个产业的增加总值
y = values[:, 6:]
# y1 = values[:, 3]
# y2 = values[:, 4]
# y3 = values[:, 5]
#
# # 绘图
plt.plot(x, y)
# 注意:此时使用一个横轴,对应多列数据,拿出每一列与横轴一一对应去绘制折线图
# plt.plot(x, y1)
# plt.plot(x, y2)
# plt.plot(x, y3)# 纵轴名称
plt.ylabel('生产总值(亿元)')# 从columns 中获取
legend = [tmp[:2] for tmp in columns[6:]]
# 增加图例
plt.legend(legend, loc=0, fontsize=3)# 修改横轴刻度
xticks = values[:, 1]
# 参数rotation=45 -->旋转45°
plt.xticks(x[::4], xticks[::4], rotation=45)# 保存图片
plt.savefig('./2000-2017年各个产业、行业增加总值.png')
# 图形展示
plt.show()# 折线图的应用场景:
# 用于查看数据的发展规律、趋势 ---折线图

四、散点图绘制

散点图(scatter diagram)又称为散点分布图,是以一个特征为横坐标,另一个特征 为纵坐标,利用坐标点(散点)的分布形态反映特征间的统计关系的一种图形

值是由点在图表中的位置表示,类别是由图表中的不同标记表示,通常用于比较跨类别的数据

另外,如果可以可以使用曲线拟合的散点,也可以用来反映数据的变化趋势,可以使用 plt.scatter 来绘制散点图

plt.scatter(x, y, s=None, c=None, marker=None, alpha=None, **kwargs)

参数名称 说明
x,y 接收 array,表示 x 轴和 y 轴对应的数据,无默认
s 接收数值或者一维的 array,指定点的大小,若传入一维 array 则表示每个点的大小,默 认为 None
c 接收颜色或者一维的 array,指定点的颜色,若传入一维 array 则表示每个点的颜色,默认为 None
marker 接收特定 string,表示绘制的点的类型,默认为 None
alpha 接收 0-1 的小数,表示点的透明度,默认为 None

以 2000-2017 年各个产业增加总值散点图为例,来绘制散点图

以下为绘制效果展示:

代码实现:

import numpy as np
import matplotlib.pyplot as plt# 1、加载数据
fp = np.load('./国民经济核算季度数据.npz', allow_pickle=True)
# # 遍历
# for k in fp:
#     print(k)
#  获取保存的数组
columns = fp['columns']
values = fp['values']print('columns:\n', columns)
print('values:\n', values)# 2、绘制图形
# 2000-2017各个产业增加总值散点图
# 创建画布
plt.figure(figsize=(16, 14), dpi=80)
# 默认不支持中文 ---修改RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
# 增加字体之后变得不支持负号,需要修改RC参数让其继续支持负号
plt.rcParams['axes.unicode_minus'] = False# 绘图及修饰
# 绘制散点图
# x = np.array([1, 2, 3])
#
# y = np.array([5, 8, 4])# x-->横坐标
# y ->纵坐标
# s -->点的大小,可以传一个值,也可以传一个array表示各个点的大小
# c -->点的颜色,可以传一个值,也可以传一个array表示各个点的颜色
# marker --->点的样式
# alpha --->透明度 [0,1],数值越小越透明,越大越凝实
# 注意: x 和 y 必须是相同元素个数,一一对应关系
# plt.scatter(x, y, s=[7, 12, 30], c=['r', 'g', 'b'], marker='*', alpha=1)# 构建横轴数据
x = np.arange(values.shape[0])
# 构建纵轴数据
y1 = values[:, 3]
y2 = values[:, 4]
y3 = values[:, 5]# 绘制图形
plt.scatter(x, y1, c='r', marker='*')
plt.scatter(x, y2, c='k', marker='d')
plt.scatter(x, y3, c='b', marker='o')# 修饰
# 增加标题
plt.title('2000-2017年各个产业增加总值散点图')# 横轴名称
plt.xlabel('时间')# 纵轴名称
plt.ylabel('生产总值(亿元)')# 修改横轴刻度
plt.xticks(x[::4], values[:, 1][::4], rotation=45)# 增加图例
legend = [tmp[:4] for tmp in columns[3:6]]
plt.legend(legend, loc=0)# 保存图片
plt.savefig('./2000-2017年各个产业增加总值散点图.png')# 图形展示
plt.show()# 散点图应用场景:
# 1、查看数据的发展规律、趋势
# 2、查看数据的分布规律

散点图任务:绘制 2000-2017 各产业与行业的国民生产总值散点图

国民生产总值数据总共有三大产业的国民生产总值,以及农业、工业、建筑、批发、交通、餐饮、金融、房地产和其他行业各个季度的增加值

通过散点图分析三大行业的国民生产总值可以发现我国产业结构。通过比较各行业间季 度的增加值则可以发现国民经济的主要贡献行业

以下为绘制效果展示:

五、柱状图绘制

柱状图(bar chart)是一种以长方形的长度为变量的表达图形的统计报告图,由一系列 高度不 等的纵向条纹表示数据分布的情况,用来比较两个或以上的价值(不同时间或者不 同条件),只有一个变量,通常利用于较小的数据集分析,用柱状图可以比较直观地看出各组数据之间的差别

matplotlib.pyplot.bar(left,height,width = 0.8,bottom = None,hold = None, data = None**kwargs)

常用参数及说明如下表所示:

参数名称 说明
left 接收 array,表示 x 轴数据,无默认
height 接收 array,表示 x 轴所代表数据的数量,无默认
width 接收 0-1 之间的 float,指定直方图宽度,默认为 0.8
color 接收特定 string 或者包含颜色字符串的 array,表示直方图颜色,默认为 None

以 2000 年、2017 年各个产业、行业对比为例,绘制柱状图:

以下为绘制效果展示:

代码实现:

import matplotlib.pyplot as plt
import numpy as np# 柱状图---高低不同的长方形柱子来表示,各柱子之间一般存在间距
# 主要用于对比不同类别的数据,可以直观的得到不同类别的差距
# 比较类别不宜过多,一般不超过9类,适用于少量数据# plt.bar --->用来绘制柱状图# 绘制2000、2017年各个产业、行业对比柱状图# 1、加载数据
fp = np.load('./国民经济核算季度数据.npz', allow_pickle=True)
# # 遍历
# for k in fp:
#     print(k)
#  获取保存的数组
columns = fp['columns']
values = fp['values']print('columns:\n', columns)
print('values:\n', values)# 2、绘图
# 创建画布
fig = plt.figure()
# 默认不支持中文 ---修改RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
# 增加字体之后变得不支持负号,需要修改RC参数让其继续支持负号
plt.rcParams['axes.unicode_minus'] = False# 绘图及修饰
# 添加子图
fig.add_subplot(2, 2, 1)
# 2000年第一季度 各个产业对比柱状图
# x--->横轴坐标
# height --->柱子的高度 ---即 x 所一一对应的 y值
# width --->柱子的宽度 ---默认是0.8
# color--->柱子的颜色
x = np.arange(1, 4)
#
y = values[0, 3:6]  # --->2000年第一季度的 第一、第二、第三产业的值
# 绘图
plt.bar(x, y, width=0.5, color='#6495ED')  # color='r'# 增加标题
plt.title('2000年第一季度各个产业增加总值对比柱状图')# 横轴名称
plt.xlabel('产业')# 纵轴名称
plt.ylabel('生产总值(亿元)')# 修改横轴刻度
xticks = [tmp[:4] for tmp in columns[3:6]]
plt.xticks(x, xticks)# # 标注
for i, j in zip(x, y):plt.text(i, j, '%.2f亿元' % j, horizontalalignment='center')# 柱状图不需要 图例fig.add_subplot(2, 2, 2)fig.add_subplot(2, 2, 3)fig.add_subplot(2, 2, 4)# 图形展示
plt.show()

六、直方图绘制

直方图(Histogram)又称质量分布图,是统计报告图的一种,由一系列高度不等的纵 向条纹或线段表示数据分布的情况,一般用横轴表示数据所属类别,纵轴表示数量或者占比

用直方图可以比较直观地看出产品质量特性的分布状态,便于判断其总体质量分布情况,直方图可以发现分布表无法发现的数据模式、样本的频率分布和总体的分布

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

参数名称 说明
x (n,) array or sequence of (n,) arrays 这个参数是指定每个 bin(箱子)分布 的数据,对应 x 轴
bins integer or array_like, optional,这个参数指定 bin(箱子)的个数,也就是总 共有几条条状图
color color or array_like of colors or None, optional,这个指定条状图的颜色

以 xx 班级学员的身高分布为例,绘制直方图,以下为某班级学员身高统计表:

身高(cm) 143.7 154.7 162.5 172.6 153.2 174.4

以下为绘制效果展示:

代码实现:

import matplotlib.pyplot as plt
import numpy as np# 直方图---质量分布图 ---用来查看的数据的分布状态
# 也是由高低不同的柱子组成,一般情况下,柱子之间是连续
# 横轴 ---数据的分布区间
# 纵轴 ---各个区间内的数据的数量
# 适用于大量数据# plt.hist  --->用来绘制直方图# 假设某班级 存在30名同学, 查看该班级同学的身高分布范围# 1、先生成30名同学身高数据 --随机生成
hight = np.random.uniform(low=140, high=190, size=30)
print('hight:\n', hight)
# 身高是保留一位小数
hight = np.array([float('%.1f' % tmp) for tmp in hight])
print('保留一位小数的身高:\n', hight)# 1、创建画布
plt.figure()
# 默认不支持中文 ---修改RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
# 增加字体之后变得不支持负号,需要修改RC参数让其继续支持负号
plt.rcParams['axes.unicode_minus'] = False# 2、绘图及修饰
# x --->真实绘制直方图的数据
# bins --->分组状态,可以是指定分组的组数,或者是一个array,表示分组节点
# 绘制直方图
# plt.hist(hight, bins=5) # 系统默认分组
# 自定义分组
# bins = [140, 150, 160, 170, 180, 190]
# orientation='horizontal' # 水平显示直方图
# rwidth --->柱子的宽度,默认为1
# plt.hist(hight, bins=bins, edgecolor='k')  # color='r' -->柱子的颜色# 自定义等宽
# (1) 确定分组组数
group_num = 5# (2) 确定数据 最大值、最小值
max_height = np.max(hight, axis=0)
min_height = np.min(hight, axis=0)print('身高的最大值:\n', max_height)
print('身高的最小值:\n', min_height)# (3)确定组内间距
# (最大-最小) / 分组个数  --->向上取整   ---> int
#  np.ceil --->向上取整
#  np.floor --->向下取整
width = np.ceil((max_height - min_height) / group_num)#  (4) 确定分组节点
# 结尾+ width 的原因: 是为了最后一个区间肯定包含最大值
bins = np.arange(min_height, max_height + width, width)print('bins:\n', bins)# 绘图
plt.hist(hight, bins=bins, edgecolor='k',color='#6495ED')# 修改刻度
plt.xticks(bins)# 增加网格线
plt.grid(b=True, axis='y', alpha=0.2)# 直方图 不需要设置图例# 设置标题
plt.title('班级的同学身高分布直方图')# 横轴名称
plt.xlabel('身高')# 纵轴名称
plt.ylabel('人数(个)')# 保存图片
plt.savefig('./班级的同学身高分布直方图.png')# 3、图形展示
plt.show()

通过绘制了柱状图、直方图,那么柱状图、直方图长的非常类似,它们又有什么区别呢?

直方图和柱状图最让人迷惑的地方,就是它们长得非常相似

实际上,直方图和柱状图 无论是在图表意义、适用数据上,还是图表绘制上,都有很大的不同,主要分为以下区别:

(1)直方图展示数据的分布,柱状图比较数据的大小

(2)直方图 X 轴为定量数据,柱状图 X 轴为分类数据

(3)直方图柱子无间隔,柱状图柱子有间隔

(4)直方图柱子宽度可不一,柱状图柱子宽度须一致。 那么到底使用直方图需要注意哪些点?

(1)注意组距,组距会影响直方图呈现出来的数据分布,因此在绘制直方图的时候需 要多次尝试改变组距

(2)X 轴上为左闭右开区间

(3)注意 Y 轴所代表的变量

七、饼图绘制

饼图(Pie Graph)是将各项的大小与各项总和的比例显示在一张“饼”中,以“饼” 的大小来确定每一项的占比。饼图可以比较清楚地反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的大小,而且显现方式直观

pie 函数:
matplotlib.pyplot.pie(x,explode=None,labels=None,colors=None,autopct=None,pctdistance=0.6,shadow=False,labeldistance=1.1,startangle=None,radius=None, … )

常用参数及说明如下表所示:

参数名称 说明
x 接收 array,表示用于绘制饼的数据, 无默认
autopct 接收特定 string,指定数值的显示方式,默认为 None
explode 接收 array,表示指定项离饼图圆心 为 n 个半径,默认为 None
pctdistance 接收 float,指定每一项的比例和距离饼 图圆心 n 个半径,默认为 0.6
labels 接收 array,指定每一项的名称,默 认为 None
labeldistance 接收 float,指定每一项的名称和距离饼 图圆心多少个半径,默认1.1
color 接收特定 string 或者包含颜色字符 串的 array,表示饼图颜色,默认为 None
radius 接收 float。表示饼图的半径,默认为 1

以 2017 年第一季度各个产业增加总值占比为例,绘制饼图:

绘制效果展示:

代码实现:

import numpy as np
import matplotlib.pyplot as plt# 饼图---将各项数据绘制在一张饼中,用以对比部分与部分、部分与整体的关系。# plt.pie来进行绘制饼图。# 2017年第一季度各个产业增加总值占比饼图# 1、加载数据
fp = np.load('./国民经济核算季度数据.npz', allow_pickle=True)
# # 遍历
# for k in fp:
#     print(k)
#  获取保存的数组
columns = fp['columns']
values = fp['values']print('columns:\n', columns)
print('values:\n', values)# 2、绘图
# 创建画布
plt.figure()
# 默认不支持中文 ---修改RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
# 增加字体之后变得不支持负号,需要修改RC参数让其继续支持负号
plt.rcParams['axes.unicode_minus'] = False# 绘制图形及修饰
# x --->需要绘制饼图的数据
x = values[-1, 3:6]
# 绘制饼图
# explode --->各部分远离饼心的距离(半径),或者:两两之间的缝隙的大小
explode = (0.01, 0.01, 0.02)
# labels --->指的是各部分的名称
labels = [tmp[:4] for tmp in columns[3:6]]# colors --->各部分的颜色
colors = ['r', 'g', 'b']
# autopct ---> 占比的数值
autopct = '%.1f%%'
# pctdistance=0.6  --->占比的数值 位置
# shadow --->阴影
shadow = True
# labeldistance=1.1 --->labels 的位置
# radius -->半径的大小,默认为 1
# center : 中心位置
# wedgeprops={'linewidth': 10} 阴影边线
plt.pie(x, explode=explode, labels=labels, autopct=autopct,shadow=shadow)  # colors=colors# 设置图例
plt.legend(labels)# 设置标题
plt.title('2017年第一季度各个产业增加总值占比饼图')# 保存图片
plt.savefig('./2017年第一季度各个产业增加总值占比饼图.png')# 图形展示
plt.show()

八、箱线图绘制

箱线图(boxplot)也称箱须图,其绘制需使用常用的统计量,能提供有关数据位置和分散情况的关键信息,尤其在比较不同特征时,更可表现其分散程度差异,箱线图利用数据 中的五个统计量(最小值、下四分位数、中位数、上四分位数和最大值)来描述数据,它也 可以粗略地看出数据是否具有对称性、分布的分散程度等信息,特别可以用于对几个样本的比较

箱线图外形:

boxplot 函数:matplotlib.pyplot.boxplot(x,notch=None,sym=None,vert=None,whis=None,positions=None,widths=None,patch_artist=None,meanline=None,labels=None, … )

常用参数及说明如下表所示:

参数名称 说明
x 接收 array,表示用于绘制箱线图的数据,无默认
positions 接收 array,表示图形位置,默认为 None
notch 接收 boolean,表示中间箱体是否有 缺口。默认为 None
widths 接收 scalar 或者 array,表示每个箱 体的宽度。默认为 None
sym 接收特定 sting,指定异常点形状,默 认为 None
labels 接收 array,指定每一个箱线图的标 签,默认为 None
vert 接收 boolean,表示图形是横向纵向 或者横向,默认为 None
meanline 接收 boolean,表示是否显示均值线,默认为 False

以 2000-2017 年各个产业增加总值为例,绘制箱线图:

绘制效果展示:

代码实现:

import matplotlib.pyplot as plt
import numpy as np# 箱线图--外形类似于风箱,使用5个统计指标量(最小值、
# 下四分位数、中位数、上四分位数、最大值)来描述数据。
# 查看数据是否对称、分散情况。# 查看箱子的长度 来获取数据是否对称、以及分散程度的大小# (剔除异常值的功能---后续再去看)# plt.boxplot -->绘制箱线图# 1、加载数据
fp = np.load('./国民经济核算季度数据.npz', allow_pickle=True)
# # 遍历
# for k in fp:
#     print(k)
#  获取保存的数组
columns = fp['columns']
values = fp['values']print('columns:\n', columns)
print('values:\n', values)# 2、绘图
# 创建画布
plt.figure()
# 默认不支持中文 ---修改RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
# 增加字体之后变得不支持负号,需要修改RC参数让其继续支持负号
plt.rcParams['axes.unicode_minus'] = False# 绘图及修饰
# 2000-2017年第一产业的增加总值的箱线图
# x--->绘制箱线图的数据
# 有些版本中,必须将整个箱子的数据作为一个整体,可以将一个箱子的数据作为一个元组的元素
x = (values[:, 3], values[:, 4], values[:, 5])
# notch ---是否开缺口  --置信区间(confidence interval -->CI)
# sym --异常值的标注样式
# vert  ---控制着箱线图的方向,vert=False 水平箱线图
# meanline -->均线 必须和 showmeans 才能显示均值线
# labels ---> 各个箱子的名称
labels = ['第一产业', '第二产业', '第三产业']
# positions ---> 位置 --->指定箱子显示的位置,一般为默认
# positions=[3, 2, 1]
plt.boxplot(x, notch=True, sym='*', meanline=True, showmeans=True, labels=labels)# 增加标题
plt.title('2000-2017年各个产业增加总值箱线图')
# 增加横轴名称
plt.xlabel('产业')
# 增加纵轴名称
plt.ylabel('生产总值(亿元)')
# 保存图片
plt.savefig('./2000-2017年各个产业增加总值箱线图.jpeg')
# 不需要图例# 图形展示
plt.show()

九、K 线图绘制

K 线图形态可分为反转形态、整理形态及缺口和趋向线等,后 K 线图因其细腻独到的标画方式而被引入到股市及期货市场,股市及期货市场中的 K 线图的画法包含四个数据,即开 盘价、最高价、最低价、收盘价,所有的 k 线都是围绕这四个数据展开,反映大势的状况和价格信息。如果把每日的 K 线图放在一张纸上,就能得到日 K 线图,同样也可画出周 K 线图、 月 K 线图

其中开盘价、最高价、最低价、收盘价的理解:

开盘价: 开盘价又称开市价,是指某种证券在证券交易所每个交易日开市后的第一笔每股买卖成交价格。

收盘价: 收盘价为当日该证券最后一笔交易前一分钟所有交易的成交量加权平均价(含最后一笔 交易)。当日无成交的,以前收盘价为当日收盘价。

最高价: 指某种证券在每个交易日从开市到收市的交易过程中所产生的最高价格。如果当日该种 证券成交价格没有发生变化,最高价就是即时价;若当日该种证券停牌,则最高价就是前收 市价。

最低价: 最低价指某种证券在每个交易日从开市到收市的交易过程中所产生的最低价格

以 tushare 中的股票数据为例,绘制 K 线图,以下为股票代码为 600728 的股票的 ohlc 数据:

绘制效果展示:

代码示例:

import tushare  as ts
import mpl_finance as mpf
import matplotlib.pyplot as plt
import numpy as np# 需要安装tushare  + 清华   源
# pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple
# 需要安装 mpl_finance
# pip install mpl_finance -i https://pypi.tuna.tsinghua.edu.cn/simple# 从tushare 中获取某一支 股票的交易信息
# 获取股票信息
# code ---股票代码
# start-- 开始日期
# ktype='D' ---每个交易日都查询
# autype='qfq' --复权
data = ts.get_k_data('600728', start='2020-01-01', ktype='D')
print('data:\n', data)# 时间  ---ohlc
# 获取数据
price = data[['open', 'high', 'low', 'close']].values# 绘制
time = np.arange(price.shape[0]).reshape((-1, 1))# 拼接合并
plt_data = np.concatenate((time, price), axis=1)# 1、创建画布
fig = plt.figure()# 2、绘制图形
# 先获取坐标系
ax = fig.add_axes([0.1, 0.3, 0.8, 0.6])# ax ---坐标系
# quotes --->数据---》sequence of (time, open, high, low, close, ...)
mpf.candlestick_ohlc(ax, plt_data, colorup='r', colordown='g', width=0.5)
# 设置横轴刻度
plt.xticks(np.arange(price.shape[0])[::30], data['date'][::30], rotation=45)
# 3、图形展示
plt.show()

十、雷达图

之前所讲的绘制图形的数据都是二维数据,那么如果想要查看高维度的数据,那么需要 绘制另外一种图形——雷达图

雷达图可以查看该样本在不同特征的得分,来评价该样本。雷达图在游戏中、企业员工 评测中频繁使用。如,以下为王者荣耀玩家中某玩家的王者战报情况:

到底如何绘制雷达图?

可以使用 plt.polar 来绘制雷达图

以某玩家的王者荣耀战绩信息为例,绘制雷达图,来查看该玩家的战力情况,是否是“大 腿”,以下为该玩家的对战信息:

生存评分 输出评分 团战评分 KDA 发育评分
2 3.5 4 4.5 5

绘制结果展示:

代码实现:

import matplotlib.pyplot as plt
import numpy as np# 可以从不同的角度来评价数据对象
# 可以用来绘制高维度数据  --->长度超过2的一维数组
# person [hight,weight] --->二维空间
# person [hight,weight,score,math,...] --->n维空间# 可以使用雷达图将 高维度 数据 --在平面中描述# 以某玩家的王者战报 --- 雷达图绘制 --从不同的属性来查看该是否是大腿?# 极坐标# 1、创建画布
plt.figure()
# 默认不支持中文 ---修改RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
# 增加字体之后变得不支持负号,需要修改RC参数让其继续支持负号
plt.rcParams['axes.unicode_minus'] = False# 2、绘制图形
datalength = 5
# 准备角度
angle = np.linspace(0, 2 * np.pi, datalength, endpoint=False)
print('angle:\n', angle)
# 闭合角度
angle = np.concatenate((angle, [angle[0]]), axis=0)
print('angle:\n', angle)
# # 准备数据
data = np.array([2, 3.5, 4, 4.5, 5])
# 数据闭合
data = np.concatenate((data, [data[0]]), axis=0)
print('data:\n', data)
# # 雷达图
plt.polar(angle, data, color='r', marker='*', markersize=12)#
ticks = ['生存评分', '输出评分', '团战评分', 'KDA', '发育评分']# 修改刻度
plt.xticks(angle[:-1], ticks)# 3、图形展示
plt.show()
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. await,async 我要把它翻个底朝天,这回你总该明白了吧

    一:背景 1. 讲故事 await,async 这玩意的知识点已经被人说的烂的不能再烂了,看似没什么好说的,但我发现有不少文章还是从理论上讲述了这两个语法糖的用法,懂得还是懂,不懂的看似懂了过几天又不懂了,人生如戏全靠记是不行的哈😄😄😄,其实本质上来说 await, async …...

    2024/4/23 18:57:20
  2. TP6框架上传图片-亲测可用

    接收文件/*** 接收文件*/ $file = request() -> file(file);1234接收到文件后判断下收来的文件是否为null/*** 判断接收文件是否为空*/ if ($file == null) {return $this -> show(config("status.failed"),config("message.failed"),未上传图片); }…...

    2024/4/30 22:48:29
  3. 论建模大神是如何用zbrush将所有模型分开的

    在使用ZBrush软件雕刻过程中,如何将一个模型分开,这似乎成了一个难题,许多朋友遇到这样的情况都不知如何下手。假如一个人物模型的上半部分要分为头和身体两个部分,把模型在3D层里隔开该如何操作?(如果想更多了解游戏建模可以加小编游戏建模企鹅交流社团:1046777540,还…...

    2024/4/25 17:28:27
  4. 缓解数据包丢失对WAN的影响是当务之急—Vecloud微云

    网络数据包是网络层的协议数据单元(PDU)。我们所有人都有这样一个概念:通过像Internet这样的TCP / IP网络传输数据,需要将数据分解成包含相关应用程序数据和标头的小数据包(通常小于1500个字节)。路由器将这些数据包从源转发到目标,并且数据封装使数据能够遍历TCP / IP堆…...

    2024/4/24 5:20:43
  5. 对网络布线与数制转换的个人理解

    网络布线与数制转换一、信号概述信号是表示消息的物理量1.信号的分类1.1 模拟信号模拟信号是连续变化的物理量表示的信息。其信号的幅度、或频率、或相位随时间作连续变化或在一段时间间隔内,其代表信息的特征量可以在任意瞬间呈现为任意数值的信号2.1 数字信号数字信号指自变…...

    2024/4/28 8:04:56
  6. CSP_201909-2_小明种苹果(续)(C)

    试题编号: 201909-2试题名称: 小明种苹果(续)时间限制: 1.0s内存限制: 512.0MB代码: #include <stdio.h>int b[1000]= {0}; int main(int argc, char** argv) {int i,j,k,t=0,d=0,e=0,a,n,m,now;scanf("%d",&n);for(i=0; i<n; i++) {scanf("…...

    2024/4/25 8:54:51
  7. 【微积分3】第三章第一节 不定积分

    【微积分3】第三章第一节 不定积分第一节 不定积分1. 内容要点1. 两个基本概念2. 原函数的存在性3. 不定积分的性质4. 基本积分公式5. 三种主要积分法6. 三类常见可积函数积分2. 常考题型1. 计算不定积分2. 不定积分杂例第一节 不定积分1. 内容要点 1. 两个基本概念2. 原函数的…...

    2024/4/23 23:32:15
  8. 【日常】- maximum-depth-of-binary-tree

    题目描述 求给定二叉树的最大深度。最大深度是指树的根结点到最近叶子结点的最长路径上结点的数量。 1(最初劣质版)思路 遍历所有从根节点到叶子节点的路径,求最长当栈顶左子树右子树均为空时→叶子节点:如果长度大于最长长度则记为最长长度,否则退回父节点,并进入废弃数组…...

    2024/4/11 21:16:51
  9. C# DataTable 去重

    C# DataTable 去重的一些用法第一种:采用DataView.ToTable()方法第二种:循环遍历+DataTable.Select() 第一种:采用DataView.ToTable()方法 其根据现有 DataView 中的行,创建并返回一个新的 DataTable。点击如下链接跳转查看源码 (1)DataView.ToTable (). (2)DataView.T…...

    2024/5/1 23:28:43
  10. Leetcode: NO.491 递增子序列 回溯

    题目 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例:输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]说明:给定数组的长度不会超过15。 数组中的整数范围是 [-100,100]。…...

    2024/4/11 21:16:49
  11. halcon 捕获异常

    halcon 例程dev_close_window () dev_open_window (0, 0, 512, 512, black, WindowHandle) dev_error_var (Error, 1) dev_set_check (~give_error) FileName := wrong_name read_image (Image, FileName) ReadError := Error dev_set_check (give_error) if (ReadError != H_M…...

    2024/4/11 21:16:48
  12. 除0错检测器

    目录 DIVALARM - 实验要求 DIVALARM - 环境配置 DIVALARM - 基础运行 DIVALARM - LLVM基本指令结构 DIVALARM - 可达定义与污点分析 DIVALARM - 代码实现 DIVALARM - 问题 实验要求 基于LLVM和Z3,在基本的代码框架下,实现一个基于数据流分析的简单C程序和除0错漏洞分析器。 环…...

    2024/4/28 2:39:14
  13. Pandas 基础

    一、对Pandas库认识 pandas(panel data & data analysis),是基于 numpy(提供高性能的矩阵运算)专门用于数据分析的工具,是一个强大的分析结构化数据(表格数据)的工具集,能够用于数 据挖掘和数据分析,同时也提供数据清洗功能 1、DataFramename age groupstu0 张某…...

    2024/5/2 7:15:34
  14. vue路由跳转的方式

    vue路由跳转有四种方式router-linkthis.$router.push() (函数里面调用)this.$router.replace() (用法同push)this.$router.go(n)一、不带参 1.1 router-link//name,path都行, 建议用name // 注意:router-link中链接如果是/开始就是从根路由开始,如果开始不带/,则从当前路由…...

    2024/4/24 21:07:28
  15. 美好开发,从DTO开始,java的DTO与实体类的区别

    表现层与应用层之间是通过数据传输对象(DTO)进行交互的,数据传输对象是没有行为的POCO对象,它 的目的只是为了对领域对象进行数据封装,实现层与层之间的数据传递。为何不能直接将领域对象用于 数据传递?因为领域对象更注重领域,而DTO更注重数据。不仅如此,由于“富领域…...

    2024/4/13 15:59:32
  16. CentOS7.6 安装 redis6.0.6 maven3.6

    博客参考:https://blog.csdn.net/qq_35992900/article/details/82950157cd /opt wget http://download.redis.io/releases/redis-6.0.6.tar.gz tar -zxvf redis-6.0.6.tar.gz cd redis-6.0.6 makemake出现问题:【原因:gcc版本过低】yum -y install centos-release-sclyum -y…...

    2024/5/2 7:57:09
  17. Scratch编程(八)扩展模块:文字朗读模块

    文字朗读是最基础的人工智能插件。在我们日常生活中,例如排队叫号,车站报播,高铁报站等等,或者是比较智能的机器人,与人的语音交互,都是以文字朗读为技术底层进行实现的。文字朗读作用就是:将文字转换成语音,Scratch3.0中的文字朗读模块,除了支持中文朗读,还支持其他…...

    2024/4/20 23:27:19
  18. 软件基本功:重构工作的考虑及执行

    手头工作非常之多。按照重要性的排序,吾决定着手重构WP。WP代码量非常之多(未统计,怎么也超过10万行),工作思路吾很清楚,如何进行具体操作,却不是几句话能解决的。于是吾就考虑,如何下手?有以下要考虑的地方:准备工作这一阶段的修改,是为了后续重构,所以不能影响功…...

    2024/4/23 18:14:47
  19. 消息队列常见的 5 个应用场景

    消息队列常见的 5 个应用场景消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能、高可用、可伸缩和最终一致性架构。使用较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ。消息队列应用场景以下介绍消息…...

    2024/4/10 11:25:15
  20. Verilog有哪些运算符及其优先级

    目录1、算术运算符2、关系运算符3、 逻辑运算符4、 条件运算符5、位运算符6、 移位运算符7、 拼接运算符8、运算符的优先级Verilog中的运算符 按照功能可以分为下述类型:1、算术运算符、2、关系运算符、3、逻辑运算符、4、条件运算符、5、位运算符、6、移位运算符、7、拼接运算…...

    2024/4/11 21:16:43

最新文章

  1. 【设计模式】之责任链模式

    系列文章目录 【设计模式】之策略模式 文章目录 系列文章目录 前言 一、什么是责任链模式 二、有什么使用场景呢 三、如何使用责任链模式 总结 前言 上次我们了解了设计模式中的策略模式&#xff0c;今天我们继续学习责任链模式。&#x1f308; 一、什么是责任链模式 为…...

    2024/5/2 12:28:55
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 自动化标准Makefile与lds

    makefile的自动化&#xff0c;需要使用变量&#xff0c;以及自动变量。 实行命令行与参数的分离。 命令行只与变量打交道&#xff0c;而变量则携带不同的参数&#xff0c;这样&#xff0c;通过修改变量&#xff0c;命令的执行结果不同。 可以简单理解为&#xff0c;命令行是个…...

    2024/4/30 2:45:52
  4. 腾讯云容器与Serverless的融合:探索《2023技术实践精选集》中的创新实践

    腾讯云容器与Serverless的融合&#xff1a;探索《2023技术实践精选集》中的创新实践 文章目录 腾讯云容器与Serverless的融合&#xff1a;探索《2023技术实践精选集》中的创新实践引言《2023腾讯云容器和函数计算技术实践精选集》整体评价特色亮点分析Serverless与Kubernetes的…...

    2024/5/2 2:36:49
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/2 11:19:01
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/1 13:20:04
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/1 21:18:12
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/2 9:47:31
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/2 9:47:31
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/2 6:03:07
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/2 9:47:30
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/1 11:24:00
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/2 5:31:39
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/1 20:22:59
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/2 9:47:28
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/2 9:47:27
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/2 0:07:22
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/2 8:37:00
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/2 9:47:26
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/2 9:47:25
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/1 14:33:22
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/1 11:51:23
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/2 7:30:11
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/1 20:56:20
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57