第六章 Matplotlib

Matplotlib

在了解了NumpyPandas之后,我们基本具有了一些数据处理和计算的能力,下一步是了解一些数据可视化的方法

在进行数据可视化时,我们最常使用的库是Matplotlib,通过Matplotlib我们可以将Numpy或者Pandas中的数据通过画图的方式更加直观的展示出来,方便我们分析。

在使用之前同样确保已经安装了Matplotlib库,使用conda或者pip来安装。

bash 复制代码
conda install matplotlib
# or
pip install matplotlib
python 复制代码
import numpy as np # 生成数据使用
import matplotlib.pyplot as plt # 导入包

Matplotlib具有丰富的功能,能够根据我们的需求画出各种可视化的效果,并且提供了丰富的自定义选项和可配置项,以下展示一些简单直观的应用方法

1.1 常用图表类型

1.1.1 绘制折线图

python 复制代码
# 折线图
plt.plot([1,2,3,4,5],[1,2,3,4,5]) # 画出一条经过(1,1),(2,2,),(3,3,)....(5,5)的直线
plt.xlabel('xlabel',fontsize = 16) # 在x轴上标注内容
plt.ylabel('ylabel',fontsize = 16) # 在y轴上标注内容
plt.grid(True) # 显示网格

1.1.2 绘制散点图

python 复制代码
# 散点图
plt.scatter([1,2,3,4,5],[1,2,3,4,5]) 
plt.xlabel('xlabel') # 在x轴上标注内容
plt.ylabel('ylabel') # 在y轴上标注内容

1.1.3 绘制柱状图

python 复制代码
# 柱状图
x = np.linspace(1,11,10)
y = np.random.rand(10)
plt.bar(x,y)
复制代码
# 横置柱状图
x = np.linspace(1, 11, 10)
y = np.random.rand(10)
plt.barh(x,y)

1.1.4 绘制直方图

python 复制代码
# 直方图
x = np.random.randn(1000) # 生成1000个服从正态分布的数据
plt.hist(x,bins=30) # 画直方图,bin参数指定分成的组数
plt.show()

1.1.5 绘制饼图

python 复制代码
# 饼图
plt.pie([1,1,1],labels=["a","b","c"])
plt.show()

1.1.6 绘制箱形图

Matplotlib可以方便地绘制箱型来观察数据的分布信息

箱形图提供了一种只用5个点对数据集做简单总结的方式。这5个点包括中点、Q1、Q3、分部状态的高位(max)和低位(min)。箱形图很形象的分为中心、延伸以及分布状态的全部范围。

python 复制代码
# 箱型图
x = np.random.randint(100,size=20)
print(x)
plt.boxplot(x) # 绘制箱型图
plt.show()
复制代码
[20 34 76  7 97 11 13 18 21 13 59 48 54 37  6 57 39 23 10 58]

1.2 绘图设置

1.2.1 自定义样式

Matplotlib可以更改所画出的线条和点的颜色以及样式,线条对应的参数参考下表

字符 类型 字符 类型
'-' 实线 '--' 虚线
'-.' 虚点线 ':' 点线
'.' ',' 像素点
'o' 圆点 'v' 下三角点
'^' 上三角点 '<' 左三角点
'>' 右三角点 '1' 下三叉点
'2' 上三叉点 '3' 左三叉点
'4' 右三叉点 's' 正方点
'p' 五角点 '*' 星形点
'h' 六边形点1 'H' 六边形点2
'+' 加号点 'x' 乘号点
'D' 实心菱形点 'd' 瘦菱形点
'_' 横线点
python 复制代码
plt.plot([1,2,3,4,5],[1,2,3,4,5],"-.") # 画出一条经过(1,1),(2,2,),(3,3,)....(5,5)的虚点折线
plt.xlabel('xlabel',fontsize = 16) # 在x轴上标注内容
plt.ylabel('ylabel',fontsize = 16) # 在y轴上标注内容
plt.title("matplolib") # 在图上显示标题
plt.grid(True) # 显示网格

同样可以控制颜色,不同颜色对应的参数如下表所示:

字符 颜色
'b' 蓝色,blue
'g' 绿色,green
'r' 红色,red
'c' 青色,cyan
'm' 品红,magenta
'y' 黄色,yellow
'k' 黑色,black
'w' 白色,white
python 复制代码
this_x = np.linspace(-9,9)
this_y = np.cos(this_x)
plt.plot(this_x,this_y,":",color='c') # 同时更改线条的样式和颜色

线条的宽度和透明度也可以修改

python 复制代码
this_x = np.linspace(-9,9)
this_y = np.cos(this_x)
# linewidth 参数设置线条宽度,alpha 参数设置线条透明度
plt.plot(this_x, this_y, linewidth=3.0, alpha=0.4)

1.2.2 绘制子图

Matplotlib除了可以画单个图像,也可以将多个图像画在同一个图中

python 复制代码
plt.plot([1,2,3,4],label="a")
plt.plot([4,3,2,1],label="b")
plt.legend(loc='best') # 显示图例

Matplotlib中还有一个子图的概念,可以达到下面的效果

python 复制代码
plt.subplot(211) # 当前画图是在一个2行1列的图中,目前画子图中的第一个图
plt.plot([1,2,3,4])
plt.plot([4,3,2,1])

plt.subplot(212) # 当前是在2行1列的图中,目前画子图中的第二个图
x = np.arange(10) 
plt.plot(x,x**3)

1.2.3 坐标轴设置

Matplotlib 中还可以设置图像坐标轴的刻度单位

python 复制代码
plt.subplot(211)
this_x = np.linspace(-9,9)
this_y = np.cos(this_x)
plt.plot(this_x, this_y)
plt.subplot(212)
plt.xticks(np.arange(-9,9,1))
plt.yticks(np.arange(-1,1.1,0.4))
plt.plot(this_x,this_y)

也可以设置坐标轴的显示范围,来实现显示某一指定区间内的图像

python 复制代码
plt.subplot(211)
this_x = np.linspace(-9,9)
this_y = np.cos(this_x)
plt.plot(this_x, this_y)
plt.subplot(212)
plt.xlim((-5, 5))
plt.ylim((-1.5, 1.5))
plt.plot(this_x,this_y)

1.2.4 图像大小

Matplotlib 中也可以设置整个图像大小

python 复制代码
this_x = np.linspace(-9,9)
this_y = np.cos(this_x)
plt.figure(figsize=(3.5, 3.5)) # 设置图像大小为 3.5 英寸乘以 3.5 英寸
plt.plot(this_x, this_y)
python 复制代码
plt.figure(figsize=(7.5, 7.5)) # 设置图像大小为 7.5 英寸乘以 7.5 英寸
plt.plot(this_x,this_y)
相关推荐
l1t18 小时前
uv安装的cpython使用matplotlib库作图不能显示的问题起因和解决
matplotlib·uv
kcuwu.3 天前
Matplotlib 数据可视化指南:从入门到实战
信息可视化·matplotlib
代码小书生3 天前
Matplotlib,Python 数据可视化核心库!
python·信息可视化·matplotlib
绛橘色的日落(。・∀・)ノ4 天前
Matplotlib第六章场景案例显神通
matplotlib
蜡笔小新..4 天前
Linux下Matplotlib使用Times New Roman字体的解决方案
linux·运维·matplotlib
李昊哲小课5 天前
Pandas数据分析 - 第十一章:数据可视化
信息可视化·数据挖掘·数据分析·pandas·matplotlib
绛橘色的日落(。・∀・)ノ5 天前
Matplotlib 第五章 样式色彩秀芳华
matplotlib
书到用时方恨少!5 天前
Python Matplotlib 使用指南:数据可视化的画笔
python·信息可视化·matplotlib
人工干智能7 天前
科普:%%matplotlib inline:魔法命令 (Cell Magic)
python·matplotlib