matplotlib(二):画布(figure)与坐标轴(axes)的布局

参考文档:https://blog.csdn.net/helunqu2017/article/details/78662877

 

目录

1.figure语法及操作

2.subplot创建单个子图

3.subplots创建多个子图

4.add_subplot新增子图

5.add_axes新增子区域


1.figure语法及操作

figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)

  • num:图像编号或名称,数字为编号 ,字符串为名称,可以通过该参数激活不同的画布
  • figsize:指定figure的宽和高,单位为英寸;
  • dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80。相同的figsize,dpi越大画布越大
  • facecolor:背景颜色
  • edgecolor:边框颜色
  • frameon:是否显示边框,默认值True为绘制边框,如果为False则不绘制边框
import matplotlib.pyplot as plt
创建自定义图像
fig=plt.figure(figsize=(4,3),facecolor='blue')
plt.show()

2.subplot创建单个子图

subplot(nrows,ncols,sharex,sharey,subplot_kw,**fig_kw)

subplot可以规划figure划分为n个子图,但每条subplot命令只会创建一个子图 ,参考下面例子。

import numpy as np  
import matplotlib.pyplot as plt  
x = np.arange(0, 100)  

#子图1
plt.subplot(221)  
plt.plot(x, x)  

#子图2
plt.subplot(222)  
plt.plot(x, -x)  

#子图3
plt.subplot(223)  
plt.plot(x, x ** 2)  
plt.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)

#子图4
plt.subplot(224)  
plt.plot(x, np.log(x))  
plt.show()  

 

3.subplots创建多个子图

subplots参数与subplots相似

import numpy as np  
import matplotlib.pyplot as plt

x = np.arange(0, 100)  
#划分子图
fig,axes=plt.subplots(2,2)
ax1=axes[0,0]
ax2=axes[0,1]
ax3=axes[1,0]
ax4=axes[1,1]


#子图1
ax1.plot(x, x)  
#子图2
ax2.plot(x, -x)
#子图3
ax3.plot(x, x ** 2)
ax3.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
#子图4
ax4.plot(x, np.log(x))  
plt.show() 

 

 

4.add_subplot新增子图

add_subplot是面对象figure类api,pyplot api中没有此命令

add_subplot的参数与subplots的相似

import numpy as np  
import matplotlib.pyplot as plt  
x = np.arange(0, 100)  

#新建figure对象
fig=plt.figure()
#新建子图1
ax1=fig.add_subplot(2,2,1)      
ax1.plot(x, x)
 
#新建子图3
ax3=fig.add_subplot(2,2,3)
ax3.plot(x, x ** 2)
ax3.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)

#新建子图4
ax4=fig.add_subplot(2,2,4)
ax4.plot(x, np.log(x))  
plt.show()

 


 

5.add_axes新增子区域

add_axes为新增子区域,该区域可以座落在figure内任意位置,且该区域可任意设置大小

add_axes参数可参考官方文档:http://matplotlib.org/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure

import numpy as np  
import matplotlib.pyplot as plt  

#新建figure
fig = plt.figure()
# 定义数据
x = [1, 2, 3, 4, 5, 6, 7]
y = [1, 3, 4, 2, 5, 8, 6]

#新建区域ax1
#figure的百分比,从figure 10%的位置开始绘制, 宽高是figure的80%
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
# 获得绘制的句柄
ax1 = fig.add_axes([left, bottom, width, height])
ax1.plot(x, y, 'r')
ax1.set_title('area1')

#新增区域ax2,嵌套在ax1内
left, bottom, width, height = 0.2, 0.6, 0.25, 0.25
# 获得绘制的句柄
ax2 = fig.add_axes([left, bottom, width, height])
ax2.plot(x, y, 'b')
ax2.set_title('area2')
plt.show() 

 

  • 11
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matplotlib是一个Python的绘图库,用于制作各种类型的图表,包括线图、柱状图、散点图等。其中,figure、子图和axesMatplotlib中的三个重要概念。 1. figure figureMatplotlib中最顶层的容器,用于存放所有的绘图元素。它可以看作是整个图表的画布,可以设置图表的大小、分辨率和背景颜色等属性。 2. 子图 子图是指在同一个figure中划分出来的不同区域,每个区域可以绘制不同的图表。子图可以通过subplot函数来创建,它接受三个参数,分别表示子图的行数、列数和编号。 例如,以下代码会创建一个2x2的子图,并分别在每个子图中绘制一幅图表: ``` import matplotlib.pyplot as plt # 创建一个2x2的子图 fig, axs = plt.subplots(nrows=2, ncols=2) # 在第一个子图中绘制一幅线图 axs[0, 0].plot([1, 2, 3, 4], [1, 4, 2, 3]) # 在第个子图中绘制一幅柱状图 axs[0, 1].bar(['A', 'B', 'C', 'D'], [10, 5, 20, 15]) # 在第三个子图中绘制一幅散点图 axs[1, 0].scatter([1, 2, 3, 4], [1, 4, 2, 3]) # 在第四个子图中绘制一幅饼图 axs[1, 1].pie([10, 5, 20, 15], labels=['A', 'B', 'C', 'D']) plt.show() ``` 3. axes axes是指子图中的坐标系,它可以看作是子图中的一个小画板,可以在上面绘制各种图表元素。每个子图中都有一个默认的axes,可以通过gca函数来获取。 例如,在上面的代码中,可以通过以下代码来获取第一个子图的axes: ``` ax = axs[0, 0].gca() ``` 需要注意的是,axes是可以重叠的,即在同一个子图中可以添加多个axes。可以通过add_axes函数来添加一个新的axes。 例如,以下代码会在第一个子图中添加一个新的axes,并在上面绘制一幅散点图: ``` ax = axs[0, 0].add_axes([0.1, 0.1, 0.8, 0.8]) ax.scatter([1, 2, 3, 4], [1, 4, 2, 3]) ``` 综上所述,figure、子图和axesMatplotlib中的三个重要概念,它们分别代表整个图表的画布、划分出来的不同区域和子图中的坐标系。每个概念都有其独特的作用和属性,可以根据需要进行灵活运用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值