【python VS vba】(9) 在python使用matplotlib库来画多个图形,子图,以及图中图

2023-12-20 01:32:40

目录

1 用matplotlib 画多个函数图形

1.1 在一个画布里画多个图形

(1张画布,1个坐标轴系,多个图形叠在一起)

1.2 在多个画布里,分别画1个图形

(多张画布,多个坐标轴系,分别包含1个图形)

2 一个画布里作图多个子图,且按表格排列好

(多张画布,多个坐标轴系,分别包含1个图形,且按内部序号排列)

2.1 用plt.subplot()方式绘制多子图

2.2 用plt.subplots() 方式绘制多子图

2.3? 使用add_axes函数绘制图中图

3 图中图


1 用matplotlib 画多个函数图形

1.1 在一个画布里画多个图形

(1张画布,1个坐标轴系,多个图形叠在一起)

import numpy as np
import matplotlib.pyplot as plt

fig1=plt.figure(num=1)

x=np.linspace(-5,5, 10)
y=x*2+1
y2=x**2

# 绘图
plt.plot(x, y)
plt.plot(x, y2)

# 显示图像
plt.show()

1.2 在多个画布里,分别画1个图形

(多张画布,多个坐标轴系,分别包含1个图形)

import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(-5,5, 10)

fig1=plt.figure(num=1,figsize=(3,3))
y=x*2+1
# 绘图
plt.plot(x, y)

#新开一个画布
fig2=plt.figure(num=2,figsize=(5, 5))
y2=x**2
# 绘图
plt.plot(x, y2)

# 显示图像
plt.show()


?

2 一个画布里作图多个子图,且按表格排列好

(多张画布,多个坐标轴系,分别包含1个图形,且按内部序号排列)

2.1 用plt.subplot()方式绘制多子图

  • plt.subplot()方式绘制多子图,只需要传入简单几个参数即可:
  • plt.subplot(rows, columns, current_subplot_index)
  • 形如plt.subplot(2, 2, 1),其中:
  1. rows表示最终子图的行数;
  2. columns表示最终子图的列数;
  3. current_subplot_index表示当前子图的索引;
  4. 这几个参数是可以连写在一起的,同样可以被识别
  5. 例如:上面的plt.subplot(2, 2, 1),写成plt.subplot(221),两者是等价的。

import numpy as np
import matplotlib.pyplot as plt

# 子图1,散点图
plt.subplot(2, 2, 1)
plt.scatter(np.linspace(-2, 2, 5), np.random.randn(5))

# 子图2,折线图+网格
plt.subplot(2, 2, 2)
plt.plot(np.linspace(-2, 2, 5), np.random.randn(5))
plt.grid(True)

# 子图3,柱状图
plt.subplot(2, 2, 3)
x = np.linspace(0, 5, 5)
plt.bar(x, np.random.random(5))
plt.xticks(np.arange(0, 6))

# 子图4,饼图
plt.subplot(2, 2, 4)
plt.pie(np.random.random(5), labels=list("ABCDE"))

plt.show()

2.2 用plt.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() 

 


2.3? 使用add_axes函数绘制图中图

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()

 


?

3 图中图

3.1

3.2?

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() 

文章来源:https://blog.csdn.net/xuemanqianshan/article/details/135090260
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。