我想在同一个图上绘制3个子图,表示3个数量A,B和C,它们在数学上相互联系。这些联系应该由带有文本的箭头表示(数学表达式)。所需的结果如下:
的数据
xqnpmsa81#
这里有一个例子。我将一个图形划分为1x3的网格。对于箭头,您可以根据您的需求更改坐标:
import matplotlib.pyplot as pltimport numpy as np# Create a figure and divide it into a 1x3 gridfig = plt.figure(figsize=(12, 10))grid = plt.GridSpec(3, 2)# Create subplot 1 on the middle of the left side columnax1 = plt.subplot(grid[1, 0])ax1.set_title("Subplot 1")ax1.set_xlim(0, 10)ax1.set_ylim(0, 10)# Create subplots 2 and 3 on the right side columnax2 = plt.subplot(grid[0, 1])ax2.set_title("Subplot 2")ax2.set_xlim(0, 10)ax2.set_ylim(0, 10)ax3 = plt.subplot(grid[2, 1])ax3.set_title("Subplot 3")ax3.set_xlim(0, 10)ax3.set_ylim(0, 10)# Add arrows between the subplotsarrowprops = dict(arrowstyle="->", linewidth=2, color='red')arrow1_2 = plt.annotate('', xy=(-0.1, 0.5), xycoords=ax2.transAxes, xytext=(1.1, 0.6), textcoords=ax1.transAxes, arrowprops=arrowprops)plt.text(0.43, 0.7, 'Annotation 1-2', transform=fig.transFigure, fontsize=12, color='red')arrow2_3 = plt.annotate('', xy=(0.5, -0.1), xycoords=ax2.transAxes, xytext=(0.5, 1.1), textcoords=ax3.transAxes, arrowprops=arrowprops)plt.text(0.75, 0.5, 'Annotation 3-2', transform=fig.transFigure, fontsize=12, color='red')arrow3_1 = plt.annotate('', xy=(-0.1, 0.5), xycoords=ax3.transAxes, xytext=(1.1, 0.4), textcoords=ax1.transAxes, arrowprops=arrowprops)plt.text(0.43, 0.3, 'Annotation 1-3', transform=fig.transFigure, fontsize=12, color='red')# Set the aspect ratio to be equal in all subplotsax1.set_aspect('equal', adjustable='box')ax2.set_aspect('equal', adjustable='box')ax3.set_aspect('equal', adjustable='box')plt.show()
import matplotlib.pyplot as plt
import numpy as np
# Create a figure and divide it into a 1x3 grid
fig = plt.figure(figsize=(12, 10))
grid = plt.GridSpec(3, 2)
# Create subplot 1 on the middle of the left side column
ax1 = plt.subplot(grid[1, 0])
ax1.set_title("Subplot 1")
ax1.set_xlim(0, 10)
ax1.set_ylim(0, 10)
# Create subplots 2 and 3 on the right side column
ax2 = plt.subplot(grid[0, 1])
ax2.set_title("Subplot 2")
ax2.set_xlim(0, 10)
ax2.set_ylim(0, 10)
ax3 = plt.subplot(grid[2, 1])
ax3.set_title("Subplot 3")
ax3.set_xlim(0, 10)
ax3.set_ylim(0, 10)
# Add arrows between the subplots
arrowprops = dict(arrowstyle="->", linewidth=2, color='red')
arrow1_2 = plt.annotate('', xy=(-0.1, 0.5), xycoords=ax2.transAxes, xytext=(1.1, 0.6), textcoords=ax1.transAxes, arrowprops=arrowprops)
plt.text(0.43, 0.7, 'Annotation 1-2', transform=fig.transFigure, fontsize=12, color='red')
arrow2_3 = plt.annotate('', xy=(0.5, -0.1), xycoords=ax2.transAxes, xytext=(0.5, 1.1), textcoords=ax3.transAxes, arrowprops=arrowprops)
plt.text(0.75, 0.5, 'Annotation 3-2', transform=fig.transFigure, fontsize=12, color='red')
arrow3_1 = plt.annotate('', xy=(-0.1, 0.5), xycoords=ax3.transAxes, xytext=(1.1, 0.4), textcoords=ax1.transAxes, arrowprops=arrowprops)
plt.text(0.43, 0.3, 'Annotation 1-3', transform=fig.transFigure, fontsize=12, color='red')
# Set the aspect ratio to be equal in all subplots
ax1.set_aspect('equal', adjustable='box')
ax2.set_aspect('equal', adjustable='box')
ax3.set_aspect('equal', adjustable='box')
plt.show()
字符串
1条答案
按热度按时间xqnpmsa81#
这里有一个例子。我将一个图形划分为1x3的网格。对于箭头,您可以根据您的需求更改坐标:
字符串
的数据