matplotlib常用方法和操作

目录

一、操作

(一)创建图形对象

(二)多子图操作

1.add_axes(rect):添加区域

关键:关于plot()

2.subplot():划分画布

3.subplots

4.设置多图基本信息的几个方法

(1)创建时直接设置

(2) 使用 pyplot 模块中方法设置之后绘图

(3)对返回的区域对象设置

(三)显示图片

(四)显示中文及负号

二、相关元素设置

(一)图表名称

(二)x、y 轴名称

(三)x、y 轴刻度

(四)图例

(五)每条 x、y 的具体数值

        补充:

三、可视性设置

(一)网格线

(二)对坐标轴操作

(三)rcParams

(四)关于图表参数

样式缩写


        Matplotlib 是 python 中一款强大的可视化绘图工具,可以以更直观的方式对数据进行展示和呈现,可以准确高效传递信息,甚至可以帮助我们发现某种规律和特征,挖掘数据背后的价值,本文简单介绍了Matplotlib常用操作和方法

一、操作

(一)创建图形对象

        Matplotlib 中,面向对象编程的核心思想是创建图形对象并对其进行操作,或调用方法与属性,这样我们在处理多个画布和图形将更加有效

        使用 plt.figure() 生成图形对象,并设置当前画布特征,返回值是一个 figure 对象

f=plt.figure()

        内部参数: 

  • num:图形编号或名称,数字:编号、字符串:名称
  • figsize:指定宽高,单位为英寸
  • dpi:分辨率,默认72
  • facecolor:背景颜色
  • edgecolor:边框颜色
  • frameon:是否显示边框

(二)多子图操作

        上面生成的一个 figure 对象可以包含多个 axes 子绘图区域,一个 axes 是一个绘图区域,不加设置时 Axes 默认为1,整个画布都是绘图区域,理解为一个画框铺上一张纸作画

        在多子图出现重叠情况时尝试使用 plt.tight_layout() 方法设置紧凑型布局

        创建子绘图区域三种方法:

1.add_axes(rect):添加区域

        matplotlib 库中定义了一个 axes 类(轴域),指定了一个有数值范围的绘图区域,给定一个画布中可以包含多个 axes 对象,同一个 axes 只能在一个画布中使用

  • rect:位置参数,形如[left,bottom,width,height],表示左下角在画布中的位置、相对于画布的宽、高,通过比例表示(0-1)
f=plt.figure()
ax2=f.add_axes([0,0,1,1])
ax1=f.add_axes([0.2,0.2,0.5,0.5])
# 添加时会有顺序,先添加的会被覆盖在底下
ax1.plot([1,2,3],[4,5,6])
ax2.plot([6,5,4],[3,2,1])

plt.show()

matplotlib常用方法和操作_第1张图片

关键:关于plot()

        figure() 会默认创建一个作图区域,可使用 ax.plot() 对想要操作的 axes 对象进行绘图,plt.plot() 方法默认对当前 axes 进行绘制(新创一个 axes,就会切换到最新的 axes),如下面默认当前所在的区域是 ax1,因为 ax1 是最新创建的

        plot(y):仅有一个值时省略了x,则x默认[0,N-1]均匀递增,N为y轴元素个数

f=plt.figure()
ax2=f.add_axes([.1,.1,.8,.8])
ax1=f.add_axes([0.2,0.2,0.5,0.5])

plt.plot([1,2,3],[4,5,6])
plt.plot([6,5,4],[3,2,1])

plt.show()

matplotlib常用方法和操作_第2张图片

2.subplot():划分画布

        返回的值是当前区域对象

ax1=plt.subplot(211)

 参数:

  • nrows:行
  • ncols:列
  • index:当前所在定位
  • 其他:title、xlable、ylable 等均可设置

matplotlib常用方法和操作_第3张图片

        也可使用 fig.add_subplot() 方法在画布上进行绘制,3.6版本后新建子图若与现有子图重叠时,重叠部分子图会被自动删除

3.subplots

        使用方法和 subplot() 是类似

fig,ax=plt.subplots(4)

matplotlib常用方法和操作_第4张图片 

        如何取?

        由索引为0开始的行和列进行定位

fig,ax=plt.subplots(2,2)
plt.tight_layout()

# 选一个区域绘制
ax1=ax[0][1]
x=np.arange(5)
ax1.plot(x,x*2)
ax1.set_title('sqrt')
# 换一个区域绘制

ax2=ax[1][0]
ax2.plot(x,np.exp(x))
ax2.set_title('ex')
plt.show()

matplotlib常用方法和操作_第5张图片

        区别:

  1. subplot() 仅返回一包含子区域的画布,而 subplots() 返回元组,返回区域的基础上还会返回一个 figure 图形对象
  2. subplots() 将画布均匀划分,若要画实现更加自由的页面布局,可多次调用 subplot()

4.设置多图基本信息的几个方法

        主要是直接创建、pyplot方式以及面向对象三种方式

(1)创建时直接设置

        如

plt.subplot(211,title='',xlable='x_axis')
(2) 使用 pyplot 模块中方法设置之后绘图

        如

-----区域1-----
plt.subplot(211)
plt.title('ax1')
plt.plot(..)

-----区域2-----
plt.subplot(212)
plt.title('ax2')
plt.plot(..)
(3)对返回的区域对象设置

        对于区域对象很多方法都是 set_ 开头

ax1=plt.subplot(211)
ax2=plt.subplot(212)

-----区域1-----
ax1.set_title('ax1')
ax1.plot(..)

-----区域2-----
ax2.set_title('ax2')
ax2.plot(..)

(三)显示图片

        plt.show(),在 jupyter 里不需要,会自动显示图像

x=np.arange(-50,50)
y=x**2
plt.title('标题')
plt.plot(x,y)
plt.show()
  • linewidrth:该参数可以设置线条宽度 

matplotlib常用方法和操作_第6张图片

二、相关元素设置

        所有设置应在绘图前进行设置,matplotlib 会定位对当前图片或当前画布进行操作

(一)图表名称

        使用 title() 方法

plt.title('标题名称',fongsize=12)
  • fontsize:可以设置标题字体大小

matplotlib常用方法和操作_第7张图片

(二)x、y 轴名称

        使用xlable、ylable

plt.xlabel('x轴',fongsize=12)
plt.ylabel('y轴')

        字体参数

  • fontsize:设置字体大小

matplotlib常用方法和操作_第8张图片

(三)x、y 轴刻度

        使用 xticks()、yticks(),可以将 x、y 轴设置为想要的样子

参数

  • ticks:ticks的位置列表,为空则删除所有 ticks(如使用 range 指定隔几个显示一个 ticks)
  • lable:给定刻度线的标签,不指定将显示原来的标签,必须在 ticks 参数生效时才可使用
  • roration:旋转角度
  • color:颜色
x_ticks=range(-50,51,10)
y_ticks=range(0,2500,100)
plt.xticks(x_ticks)
plt.yticks(y_ticks)
  • matplotlib常用方法和操作_第9张图片

(四)图例

        legend(),用于放在图中一角对于符号颜色代表内容的指示和说明,若图形本身有 lable 将默认使用lable的值作为图例说明

plt.plot(x,y,lable='a')
plt.legend() # 显示图例

        图例中 x、y 构成的线默认为 amatplotlib常用方法和操作_第10张图片

        设置 plt.legend(loc='xxx') 参数可以对位置进行设置,图例本身默认寻找最佳位置放置(即不阻挡视图的地方)

matplotlib常用方法和操作_第11张图片

(五)每条 x、y 的具体数值

        使用 plt.text() 显示对应点上的数据值,由于x和y是对应坐标,一次只能指定一个,所以没法一步到位,应用循环语句一个个标注

参数:

  • x、y:坐标值(必有)
  • string:要说明文字(必有)
  • fontsize:字体大小
  • verticalalignment:垂直对齐方式(可选:'center'/'top'/'bottom'/'baseline')
  • horizontalalignment:数值对齐方式(可选:'center'/'right'/'left')

        补充:

        说明 zip() 方法:生成一个迭代器对象

x_l=[1,2,3]
y_l=[4,5,6]
a=zip(x_l,y_l)
print(a,type(a),id(a))
for x,y in a:
    print(x,y)

  1987486763136
1 4
2 5
3 6

         标注 x、y 的代码如下

# 根据x标签算出每个y对应的值
y_l=[]
for i in range(len(x_ticks)):
    y_l.append(x_ticks[i]**2)
# 生成迭代器
z=zip(x_ticks,y_l)
# 遍历
for a,b in z:
    plt.text(a,b,b)
# 画图
plt.show()

 matplotlib常用方法和操作_第12张图片

 (六)显示中文及负号

        上面的图片并没有将中文显示出来,因为 matplotlib 默认不支持中文,应修改字体配置,matplotlib 默认配置信息可以通过运行配置参数 rcParms 修改

        设置完中文后,默认使用 Unicode 负号,同样需要设置

plt.rcParams['font.sans-serif']=['SimHei']    --显示中文
plt.rcParams['axes.unicode_minus']=False    --显示负号

matplotlib常用方法和操作_第13张图片

三、可视性设置

(一)网格线

        使用 plt.grid() 方法

参数:

  • True:显示网格
  • linestyle:线形,默认实线
  • color:颜色默认灰色
  • linewidth:宽度
  • axis:x,y,both,显示x、y、两者的网格
plt.grid(True,linestyle='--',color='gray',axis='y')
plt.show()

matplotlib常用方法和操作_第14张图片

(二)对坐标轴操作

        plt.gca() 可以定位要控制坐标轴的轴线,如果有多个图片可以先定位到对应要操作的图片,再使用该方法,我们当前只有一个图片,因此对应的就是图片的四条轴线

        spines 指的就是轴,使用 set 对其修改

ax=plt.gca()
ax.spines['right'].set_color('none') # 设为透明
ax.spines['top'].set_color('none')
ax.spines['left'].set_position(('data',0))
# 位置设置的方法:
# ① data:元组,后面的数字代表挪动到的刻度值
# ② outward
# ③ axes:在整个轴上的比例取值0到1之间

 matplotlib常用方法和操作_第15张图片

(三)rcParams

        需要特别眼熟,这个方法可以对图像很多默认配置进行设置,如字体的修改、图画分辨率、尺寸大小等等

plt.rcParams['figure.figsize']=(8,4) # 单位:英寸,默认6*4inch
plt.rcParams['figure.dpi']=300

(四)关于图表参数

plt.plot(x,y,color=xx,alpha=xx,linestyle=xx,linewidth=xx,maker=xx,makeredgecolor=xx,makersize=xx,makeredgewidth=xx)
  •  color:颜色,可以使用英文全称,或16进制(要用直接查,要用#号)
  • alpha:透明度(取值0-1)越大透明底越低
  • linestyle、linewidth:线条样式、宽度
  • maker、makeredgecolor、makersize、makeredgewidth:标记点设置、颜色、大小、宽度

常见:

matplotlib常用方法和操作_第16张图片matplotlib常用方法和操作_第17张图片matplotlib常用方法和操作_第18张图片

样式缩写

        由于各种符号标记不会重复,因此可以直接使用形如以下方式的缩写

plt.plot(x,y,'r-+')

matplotlib常用方法和操作_第19张图片

        绘图注意事项:

  1. x与y个数应当一致否则会报错
  2. 在设定 x 与 y 的 ticks 时,lables 应用数字元素本身而非索引设置,若数据类型为字符串类型,则使用索引设置,要对应上

你可能感兴趣的:(Matplotlib,matplotlib)