Matplotlib库入门

本文介绍了matplotlib库在Python中的基本使用,包括plot函数的参数和用法,如何创建子图subplot,设置中文显示,以及绘制柱状图、直方图、饼状图和散点图。此外,还讨论了grid设置、坐标轴范围调整和极坐标图的绘制技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.matplotlib的基本认识

导入方式:

import matplotlib.pyplot as plt

plt.savefig()将输出图形存储为文件,默认PNG格式,可以通过dpi修改输出质量。

plt.plot(x,y)只有一个输出列表或数组是,参数被当作Y轴,X轴以索引自动生成。当有两个以上参数时,按照X轴和Y轴顺序绘制数据点。plt.axis()指定X轴和Y轴的起始位置。

plt.subplot(nrows,ncols,plot_number)在全局绘图区域中创建一个分区体系,并定位到一个子绘图区域。

2.pyplot的plot()函数

plt.plot(x, y, format_string, **kwargs)
  • x:X轴数据,列表或数组,可选(绘制多条曲线时,各条曲线的x不能省略)
  • y:Y轴数据,列表或数组
  • format_string:控制曲线的格式字符串(由颜色字符、风格字符和标记字符组成),可选
    颜色字符
    颜色字符说明颜色字符说明
    'b'蓝色'm'洋红色 magenta
    'g'绿色'y'黄色
    'r'红色'k'黑色
    'c'青绿色 cyan'w'白色
    '#008000'RGB某颜色(十六进制色彩)'0.8'灰度值字符串
    风格字符
    风格字符说明风格字符说明
    '-'实线':'虚线
    '--'破折线'' ' '无线条
    '-.'点划线
    标记字符
    标记字符说明标记字符说明
    '.'点标记's'实心方形标记
    ','像素标记(极小点)'p'实心五角标记
    'o'实心圈标记'*'星形标记
    'v'倒三角标记'h'竖六边形标记
    '^'上三角标记'H'横六边形标记
    '>'右三角标记'+'十字标记
    '<'左三角标记'x'x标记
    '1'下花三角标记'D'菱形标记
    '2'上花三角标记'd'瘦菱形标记
    '3'左花三角标记'|'垂直线标记
    '4'右花三角标记
  • **kwargs:第二组或更多(x, y, format_string)
    • color:控制颜色,color='green'
    • linestyle:线条风格,linestyle='dashed'
    • marker:标记风格,marker='o'
    • markerfacecolor:标记颜色,markerfacecolor='blue'
    • marksize,标记尺寸,markerfacecolor=20

案例:基本的画图使用

单条曲线

 

            多条曲线

 *****

 开始值,停止值,产生个数

3.pyplot的中文显示

rcParams的属性

属性说明
'font.family'用于显示字体的名字
'font.style'字体风格,正常'normal'或斜体'italic'
'font.size'字体大小,整数字号或者'large'、'x-small'

在有中文输出的地方,增加一个属性:fontproperties

pyplot的文本显示函数

函数说明
plt.xlabel()对X轴增加文本标签
plt.ylabel()对Y轴增加文本标签
plt.title()对图形整体增加文本标签
plt.text()在任意位置增加文本
plt.annotate()在图形中增加带箭头的注解

案例: 

 pyplot的子绘图区域:plt.subplot2grid()

Matplotlib figure图形对象 :

from matplotlib import pyplot as plt
#创建图形对象
fig = plt.figure()

该函数的参数值,如下所示:
 

add_axes() 的参数值是一个序列,序列中的 4 个数字分别对应图形的左侧,底部,宽度,和高度,且每个数字必须介于 0 到 1 之间。

说明
figsize指定画布的大小,(宽度,高度),单位为英寸。
dpi指定绘图对象的分辨率,即每英寸多少个像素,默认值为80。
facecolor背景颜色。
dgecolor边框颜色。
frameon是否显示边框。

Matplotlib subplots()函数详解:

 matplotlib.pyplot模块提供了一个 subplots() 函数,它的使用方法和 subplot() 函数类似。其不同之处在于,subplots() 既创建了一个包含子图区域的画布,又创建了一个 figure 图形对象,而 subplot() 只是创建一个包含子图区域的画布。

subplots 的函数格式如下:

fig , ax = plt.subplots(nrows, ncols)

nrows 与 ncols 表示两个整数参数,它们指定子图所占的行数、列数。

函数的返回值是一个元组,包括一个图形对象和所有的 axes 对象。其中 axes 对象的数量等于 nrows * ncols,且每个 axes 对象均可通过索引值访问(从1开始)。

下面我们创建了一个 2 行 2 列的子图,并在每个子图中显示 4 个不同的图像。

 
import matplotlib.pyplot as plt
fig,a = plt.subplots(2,2)
import numpy as np
x = np.arange(1,5)
#绘制平方函数
a[0][0].plot(x,x*x)
a[0][0].set_title('square')
#绘制平方根图像
a[0][1].plot(x,np.sqrt(x))
a[0][1].set_title('square root')
#绘制指数函数
a[1][0].plot(x,np.exp(x))
a[1][0].set_title('exp')
#绘制对数函数
a[1][1].plot(x,np.log10(x))
a[1][1].set_title('log')
plt.show()

上述代码的输出结果如下:
 

 Matplotlib subplot2grid()函数详解:

matplotlib.pyplot 模块提供了 subplot2grid() ,该函数能够在画布的特定位置创建 axes 对象(即绘图区域)。不仅如此,它还可以使用不同数量的行、列来创建跨度不同的绘图区域。与 subplot() 和 subplots() 函数不同,subplot2gird() 函数以非等分的形式对画布进行切分,并按照绘图区域的大小来展示最终绘图结果。

函数语法格式如下:

plt.subplot2grid(shape, location, rowspan, colspan)

参数含义如下:

  • shape:把该参数值规定的网格区域作为绘图区域;
  • location:在给定的位置绘制图形,初始位置 (0,0) 表示第1行第1列;
  • rowsapan/colspan:这两个参数用来设置让子区跨越几行几列。


下面,在画布(figure)中添加了行、列跨度均不相同的绘图子区域,然后在每个绘图区上,绘制不同的图形。示例代码如下:

import matplotlib.pyplot as plt
#使用 colspan指定列,使用rowspan指定行
a1 = plt.subplot2grid((3,3),(0,0),colspan = 2)
a2 = plt.subplot2grid((3,3),(0,2), rowspan = 3)
a3 = plt.subplot2grid((3,3),(1,0),rowspan = 2, colspan = 2)
import numpy as np
x = np.arange(1,10)
a2.plot(x, x*x)
a2.set_title('square')
a1.plot(x, np.exp(x))
a1.set_title('exp')
a3.plot(x, np.log(x))
a3.set_title('log')
plt.tight_layout()
plt.show()

 

 Matplotlib grid()设置网格格式:

grid() 的函数使用格式如下:

grid(color='b', ls = '-.', lw = 0.25)

参数含义如下:

  • color:表示网格线的颜色;
  • ls:表示网格线的样式;
  • lw:表示网格线的宽度;

Matplotlib坐标轴范围:

 set_xlim() 和 set_ylim() 对 x、y 轴的数值范围进行设置。

import matplotlib.pyplot as plt
fig = plt.figure()
a1 = fig.add_axes([0,0,1,1])
import numpy as np
x = np.arange(1,10)
a1.plot(x, np.exp(x),'r')
a1.set_title('exp')
#设置y轴
a1.set_ylim(0,10000)
#设置x轴
a1.set_xlim(0,10)
plt.show()

 

 Matplotlib中文乱码解决方案:

plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题

 Matplotlib柱状图:

bar()函数参数说明
x一个标量序列,代表柱状图的x坐标,默认x取值是每个柱状图所在的中点位置,或者也可以是柱状图左侧边缘位置。
height一个标量或者是标量序列,代表柱状图的高度。
width可选参数,标量或类数组,柱状图的默认宽度值为 0.8。
bottom可选参数,标量或类数组,柱状图的y坐标默认为None。
algin有两个可选项 {"center","edge"},默认为 'center',该参数决定 x 值位于柱状图的位置。

 案例说明

import matplotlib.pyplot as plt
#创建图形对象
fig = plt.figure()
#添加子图区域,参数值表示[left, bottom, width, height ]
ax = fig.add_axes([0,0,1,1])
#准备数据
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
#绘制柱状图
ax.bar(langs,students)
plt.show()

 Matplotlib直方图:

matplotlib.pyplot.hist()

该函数的参数说明如下: 

x必填参数,数组或者数组序列。
bins可选参数,整数或者序列,bins 表示每一个间隔的边缘(起点和终点)默认会生成10个间隔。
range指定全局间隔的下限与上限值 (min,max),元组类型,默认值为 None。
density如果为 True,返回概率密度直方图;默认为 False,返回相应区间元素的个数的直方图。
histtype要绘制的直方图类型,默认值为“bar”,可选值有 barstacked(堆叠条形图)、step(未填充的阶梯图)、stepfilled(已填充的阶梯图)。
from matplotlib import pyplot as plt
import numpy as np
#创建图形对象和轴域对象
fig,ax = plt.subplots(1,1)
a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27])
#绘制直方图
ax.hist(a, bins = [0,25,50,75,100])
#设置坐标轴
ax.set_title("histogram of result")
ax.set_xticks([0,25,50,75,100])
ax.set_xlabel('marks')
ax.set_ylabel('no.of students')
plt.show()

Matplotlib饼状图:


pie() 函数的参数说明如下:
 

X数组序列,数组元素对应扇形区域的数量大小。
labels列表字符串序列,为每个扇形区域备注一个标签名字。
color为每个扇形区域设置颜色,默认按照颜色周期自动设置。
autopct格式化字符串"fmt%pct",使用百分比的格式设置每个扇形
区的标签,并将其放置在扇形区内。

 案例说明

 Matplotlib散点图: 

案例说明

 Matplotlib极坐标图:

案例说明

 

Matplotlib综合案例:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值