数据分析与应用---数据可视化基础

发布于:2025-05-20 ⋅ 阅读:(19) ⋅ 点赞:(0)

目录

Matplotlib基础绘图

(一)、pyplot绘图基础语法与常用参数

1、pyplot基础语法

(1) 创建画布与创建子图

 (2) 添加画布内容

 (3) 保存与显示图形

 案例代码

2. 设置pyplot的动态rc参数

(二)、使用Matplotlib绘制进阶图形

1. 绘制散点图----scatter

 2. 绘制折线图----plot

 3. 绘制柱形图---bar

4. 绘制饼图---pie


Matplotlib基础绘图

(一)、pyplot绘图基础语法与常用参数

1、pyplot基础语法

(1) 创建画布与创建子图

函数/方法名称

函数/方法作用

plt.figure

创建一个空白画布,可以指定画布大小、像素

figure.add_subplot()

创建并选中子图,可以指定子图的行数、列数和选中图片的编号

 (2) 添加画布内容

添加标题、添加坐标轴名称、绘制图形等步骤是并列的,是没有先后顺序的。

函数名称

函数作用

plt.title

在当前图形中添加标题,可以指定标题的名称、位置、颜色、字体大小等参数

plt.xlabel

在当前图形中添加x轴标签,可以指定位置、颜色、字体大小等参数

plt.ylabel

在当前图形中添加y轴标签,可以指定位置、颜色、字体大小等参数

函数名称

函数作用

plt.xlim

指定当前图形x轴的范围,只能确定一个数值区间,而无法使用字符串标识

plt.ylim

指定当前图形y轴的范围,只能确定一个数值区间,而无法使用字符串标识

plt.xticks

获取或设置x轴的当前刻度位置和标签

plt.yticks

获取或设置y轴的当前刻度位置和标签

plt.legend

指定当前图形的图例,可以指定图例的大小、位置、标签

 (3) 保存与显示图形

在pyplot中,主要用于保存和显示图形常用函数只有两个,如下表

函数名称

函数作用

plt.savefig

保存绘制的图形,可以指定图形的分辨率、边缘的颜色等参数

plt.show

在本机显示图形

 案例代码
import numpy as np
import matplotlib.pyplot as plt
# %matplotlib inline表示在行中显示图片,在命令行运行报错
data = np.arange(0, 1.1, 0.01)
plt.title('lines')  # 添加标题
plt.xlabel('x')  # 添加x轴的名称
plt.ylabel('y')  # 添加y轴的名称
plt.xlim((0, 1))  # 确定x轴范围
plt.ylim((0, 1))  # 确定y轴范围
plt.xticks([0, 0.2, 0.4, 0.6, 0.8, 1])  # 规定x轴刻度
plt.yticks([0, 0.2, 0.4, 0.6, 0.8, 1])  # 确定y轴刻度
plt.plot(data, data ** 2)  # 添加y=x^2曲线
plt.plot(data, data ** 4)  # 添加y=x^4曲线
plt.legend(['y=x^2', 'y=x^4'])
plt.savefig('../tmp/y=x^2.jpg')
plt.show()

2. 设置pyplot的动态rc参数

pyplot使用rc配置文件来自定义图形的各种默认属性,被称为rc配置或rc参数。

所有存储在字典变量中的rc参数,都被称为rcParams。

在pyplot中,线条中常用的rc参数名称、解释与取值如下表。

rc参数名称

解释

取值

lines.linewidth

线条宽度

取0~10之间的数值,默认为1.5

lines.linestyle

线条样式

可取“-”“--”“-.”“:”4种。默认为“-”

lines.marker

线条上点的形状

可取“o”“D”“h”“.”“,”“S”等20种,默认为None

lines.markersize

点的大小

取0~10之间的数值,默认为1

lines.linestyle参数4中取值及意义如下表。 

lines.linestyle取值

意义

‘-’

实线

‘--’

长虚线

‘-.’

点线

‘:’

短虚线

 lines.marker参数的20种取值及其所代表的意义如下表。

lines.marker取值

意义

‘o’

圆圈

‘D’

菱形

‘h’

六边形1

‘H’

六边形2

‘-’

水平线

‘8’

八边形

‘p’

五边形

‘,’

像素

‘+’

加号

‘None’

‘.’

‘s’

正方形

‘*’

星号

‘d’

小菱形

‘v’

一角朝下的三角形

‘<’

一角朝左的三角形

‘>’

一角朝右的三角形

‘^’

一角朝上的三角形

‘\’

竖线

‘x’

X

# 代码5-3
# 原图
x = np.linspace(0, 4 * np.pi)  # 生成x轴数据
y = np.sin(x)  # 生成y轴数据
plt.plot(x, y, label='$sin(x)$')  # 绘制sin曲线图
plt.title('sin(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

# 修改rc参数后的图
plt.rcParams['lines.linestyle'] = '-.'
plt.rcParams['lines.linewidth'] = 3
plt.plot(x, y, label='$sin(x)$')  # 绘制三角函数
plt.title('sin(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

# 无法显示中文标题
plt.plot(x, y, label='$sin(x)$')  # 绘制三角函数
plt.title('sin(x)曲线')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

# 设置rc参数显示中文标题
# 设置字体为SimHei显示中文
plt.rcParams['font.sans-serif'] = 'SimHei' 
plt.rcParams['axes.unicode_minus'] = False  # 设置正常显示符号
plt.plot(x, y, label='$sin(x)$')  # 绘制三角函数
plt.title('sin(x)曲线')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

(二)、使用Matplotlib绘制进阶图形

1. 绘制散点图----scatter

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

散点图可以提供两类关键信息,具体内容如下。

      特征之间是否存在数值或数量的关联趋势,关联趋势是线性的还是非线性的。

      如果某一个点或某几个点偏离大多数点,那么这些点就是离群值,通过散点图可以一目了然,从而可以进一步分析这些离群值是否在建模分析中产生较大的影响。

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

接收float或array。表示x轴和y轴对应的数据。无默认值

s

接收float或array。表示指定点的大小,若传入一维数组,则表示每个点的大小。默认为None

c

接收颜色或array。表示指定点的颜色,若传入一维数组,则表示每个点的颜色。默认为None

marker

接收特定str。表示绘制的点的类型。默认为None

alpha

接收float。表示点的透明度。默认为None

filepath = 'data/2001-2019年劳动力与就业人员数据.npz'

"""
values[:, 0]表示所有行(:表示所有行)的第0列(索引从0开始计数)的所有元素。
values[:, 1]表示选择values数组中的所有行的第1列的所有元素。
"""
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
filepath = 'D:/data/2001-2019年劳动力与就业人员数据.npz'

data = np.load(filepath, encoding='ASCII', allow_pickle=True)
columns = data['arr_0']  # 提取其中的columns数组,视为数据的标签
values = data['arr_1']  # 提取其中的values数组,视为数据的存在位置

plt.figure(figsize=(12, 6), dpi=1080)  # 设置画布
plt.scatter(values[:, 0], values[:, 1], marker='o')  # 绘制散点图
plt.xlabel('年份(年)')
plt.ylabel('劳动力人数(万人)')
plt.ylim(70000, 85000)  # 设置y轴范围
plt.xticks(range(2001, 2020, 1), labels=values[:, 0])
plt.title('2001~2019年劳动力人数散点图')  # 添加图表标题
plt.show()
p = plt.figure(figsize=(12, 6), dpi=1080)  # 设置画布
# 绘制散点图1
plt.scatter(values[:, 0], values[:, 3], marker='o', c='b')
# 绘制散点图2
plt.scatter(values[:, 0], values[:, 4], marker='o', c='r')
plt.xlabel('年份(年)')
plt.ylabel('人数(万人)')
plt.ylim(20000, 60000)  # 设置y轴范围
plt.xticks(range(2001, 2020, 1), labels=values[:, 0])
plt.legend(['城镇就业人员', '乡村就业人员'])  # 设置图例
plt.title('2001~2019年城乡就业人数散点图')  # 添加图表标题
plt.show()

 2. 绘制折线图----plot

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

matplotlib.pyplot.plot(* args, scalex = True, scaley = True, data = None, ** kwargs)

x,y

接收array。表示x轴和y轴对应的数据。无默认值

scalex,scaley

接收bool。表示这些参数确定视图限制是否适合于数据限制。默认为True

data

接收可索引对象。表示具有标签数据的对象。默认为None

color

接收特定str。表示指定线条的颜色。默认为None

linestyle

接收特定str。表示指定线条类型。默认为“-”

marker

接收特定str。表示绘制的点的类型。默认为None

alpha

接收float。表示点的透明度。默认为None

 其中color参数的8种常用颜色的缩写如下表。

颜色缩写

代表的颜色

b

蓝色

g

绿色

r

红色

c

青色

m

品红

y

黄色

k

黑色

w

白色

p = plt.figure(figsize=(12, 6), dpi=1080)  #设置画布
plt.plot(values[:, 0], values[:, 2], color='r', linestyle='-')
plt.xlabel('年份(年)')
plt.ylabel('人数(万人)')
plt.ylim(70000, 80000)  # 设置y轴范围
plt.xticks(range(2001, 2020, 1), labels=values[:, 0])
plt.title('2001~2019年就业人数折线图')
plt.show()

# 代码5-8
p = plt.figure(figsize=(12, 6), dpi=1080)  #设置画布
plt.plot(values[:, 0], values[:, 2], c='b', linestyle = '-', 
         marker = 'o')  # 绘制点线图
plt.xlabel('年份(年)')
plt.ylabel('人数(万人)')
plt.ylim(70000, 80000)  # 设置y轴范围
plt.xticks(range(2001, 2020, 1), labels=values[:, 0])
plt.title('2001~2019年就业人数点线图')
plt.show()
p = plt.figure(figsize=(12, 6), dpi=1080) #设置画布
plt.plot(values[:, 0], values[:, 3], 'bs-',
          values[:, 0], values[:, 4], 'ro-.')
plt.xlabel('年份(年)')
plt.ylabel('人数(万人)')
plt.ylim(20000, 60000)  # 设置y轴范围
plt.xticks(range(2001, 2020, 1), labels=values[:, 0])
plt.legend(['城镇就业人员', '乡村就业人员'])
plt.title('2001~2019年城乡就业人数点线图')
plt.show()

 3. 绘制柱形图---bar

柱形图(Bar Chart)的核心思想是对比,常用于显示一段时间内的数据变化或显示各项之间的比较情况。

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

参数名称

参数说明

x

接收array或float。表示x轴数据。无默认值

height

接收array或float。表示指定柱形图的高度。无默认值

width

接收array或float。表示指定柱形图的宽度。默认为0.8

align

接收str。表示整个柱形图与x轴的对齐方式,可选center和edge。默认为center

color

接收特定str或包含颜色字符串的list。表示柱形图颜色。默认为None

columns = data['arr_0']  # 提取其中的columns数组,视为数据的标签
values = data['arr_1']  # 提取其中的values数组,视为数据的存在位置
# 绘制柱形图
labels = ['城镇就业人员', '乡村就业人员']
p = plt.figure(figsize=(6, 6), dpi=1080)
plt.bar(range(2), values[-1, 3:5], width=0.5)
plt.xlabel('类别')
plt.ylabel('就业人数(万人)')
plt.xticks(range(2), labels)
plt.title('2019年城乡就业人数柱形图')
plt.show()

4. 绘制饼图---pie

饼图(Pie Graph)是将各项的大小与各项总和的比例显示在一张“饼”中,以“饼”的大小来确定每一项的占比。

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

接收array。表示用于绘制饼图的数据。无默认值

explode

接收array。表示指定饼块距离饼图圆心的偏移距离。默认为None

labels

接收list。表示指定每一项的标签名称。默认为None

color

接收特定str或包含颜色字符串的array。表示饼图颜色。默认为None

autopct

接收特定str。表示指定数值的显示方式。默认为None

pctdistance

接收float。表示每个饼图切片的中心与autopct生成的文本之间的比率。默认为0.6

labeldistance

接收float。表示绘制的饼图标签离圆心的距离。默认为1.1

radius

接收float。表示饼图的半径。默认为1


网站公告

今日签到

点亮在社区的每一天
去签到