一、Matplotlib库
1.1、简介
Matplotlib 是一个用于绘制图表和可视化数据的 Python 库。它提 供了一种类似于 MATLAB 的绘图接口,使用户能够轻松地生成各种 类型的图形,包括折线图、散点图、直方图、饼图等。Matplotlib 被广泛应用于数据分析、科学计算、工程和其他领域
1.2、特点
(1)易于上手:Matplotlib的API设计简洁,绘图流程清晰,初学者可以快速掌握。
(2)高度可定制:Matplotlib提供了丰富的绘图参数,用户可以根据需求调整图形 样式、颜色、字体等。
(3)支持多种数据源:Matplotlib可以处理多种数据格式,如列表、数组、Pandas 数据框等。
(4)跨平台:Matplotlib支持Windows、Linux和macOS等多个操作系统。
安装:pip install matplotlib
1.3、 图表(Figure)
在 Matplotlib 中,Figure
是一个顶层容器,用于包含图表中的所有元素。比如坐标轴、图例、标题、等
1.4、轴(Axes)
一个 Matplotlib 图表可以包含一个或多个 Axes
对象,每个 Axes
对象都是一个独立的坐标系,可以理解成一个子图
1.5、轴(Axis)
在 Matplotlib 中,Axis
这个词可以指代 坐标轴,即图表中的X轴和Y轴。这是用于定位和测量数据点位置的参考线
1.6、画家(Artist)
在 Matplotlib 中,Artist
是一个基础的图形元素对象,它代表了图表中的各种图形元素,如图形、文本、线条等。所有的图形元素,无论是图表本身、坐标轴、标签还是其他可见的部分,都是 Artist
对象
二、Matplotlib的基本使用
方法名 | 说明 |
---|---|
title() | 设置图表的名称 |
xlabel() | 设置x轴名称 |
ylabel() | 设置y轴名称 |
xticks(x,ticks,rotation) | 设置x轴的刻度,rotation旋转角度 |
yticks() | 设置y轴的刻度 |
plot() | 绘制线性图表 |
show() | 显示图表 |
legend() | 显示图例 |
text(x,y,text) | 显示每条数据的值 x,y值的位置 |
figure(name,figsize=(w,h),dpi=n) | 设置图片大小 |
import matplotlib.pyplot as plt
x=[1,2,3,4,5]
squares=[1,4,9,16,25]
plt.plot(x,squares)
plt.show()
import matplotlib.pyplot as plt
datas=[1,2,3,4,5]
squares=[1,4,9,16,25]
plt.plot(datas,squares,linewidth=5) #设置线条宽度
#设置图标标题,并在坐标轴上添加标签
plt.title('Numbers',fontsize=24)
plt.xlabel('datas',fontsize=14)
plt.ylabel('squares',fontsize=14)
plt.show()
三、中文乱码问题
查看系统内字体
from matplotlib.font_manager import fontManager as fm
for f in fm.ttflist:
if f.fname.find('simhei.ttf') != -1:
print(f.name,'===',f.fname)
临时增加字体
from matplotlib.font_manager import fontManager as fm
fm.addfont('./ali.ttf')
for f in fm.ttflist:
if f.fname.find('ali') != -1:
print(f.name,'===',f.fname)
设置字体
import matplotlib.pyplot as plt
#设置中文乱码问题
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['font.family']='SimHei'
单独设置字体
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
datas=[1,2,3,4,5]
squares=[1,4,9,16,25]
plt.plot(datas,squares) #设置线条宽度
#设置图标标题,并在坐标轴上添加标签
plt.title('标题设置',fontsize=24,fontdict={'fontproperties':FontProperties(fname='./ali.ttf')})
plt.xlabel('x轴',fontsize=14,fontdict={'family':'SimHei'})
plt.ylabel('y轴',fontsize=14,fontdict={'family':'SimHei'})
四、负数不显示问题
plt.rcParams['axes.unicode_minus'] = False