如何用Python绘制指定图形?含方形四分及箭头文本添加需求
Python 绘制分割图形及箭头文本实现方案
一、方形分割为四部分
可以通过十字分割线或直接绘制小矩形两种方式实现:
方式1:十字分割线
import matplotlib.pyplot as plt import matplotlib.patches as patches fig, ax = plt.subplots(figsize=(5,5)) ax.set_xlim(0, 10) ax.set_ylim(0, 10) # 绘制外框方形 outer_square = patches.Rectangle((1,1), 8, 8, linewidth=2, edgecolor='black', facecolor='none') ax.add_patch(outer_square) # 绘制十字分割线 ax.plot([5,5], [1,9], color='black', linewidth=2) ax.plot([1,9], [5,5], color='black', linewidth=2) # 可选:给四个区域添加标注 ax.text(3, 3, '区域1', fontsize=12, ha='center', va='center') ax.text(7, 3, '区域2', fontsize=12, ha='center', va='center') ax.text(3, 7, '区域3', fontsize=12, ha='center', va='center') ax.text(7, 7, '区域4', fontsize=12, ha='center', va='center') plt.axis('equal') plt.axis('off') plt.show()
方式2:直接绘制四个小矩形
import matplotlib.pyplot as plt import matplotlib.patches as patches fig, ax = plt.subplots(figsize=(5,5)) ax.set_xlim(0, 10) ax.set_ylim(0, 10) # 绘制四个分割后的小方形,自动组成大方形 ax.add_patch(patches.Rectangle((1,1), 4, 4, linewidth=2, edgecolor='black', facecolor='lightblue')) ax.add_patch(patches.Rectangle((5,1), 4, 4, linewidth=2, edgecolor='black', facecolor='lightgreen')) ax.add_patch(patches.Rectangle((1,5), 4, 4, linewidth=2, edgecolor='black', facecolor='lightyellow')) ax.add_patch(patches.Rectangle((5,5), 4, 4, linewidth=2, edgecolor='black', facecolor='lightpink')) plt.axis('equal') plt.axis('off') plt.show()
二、箭头上添加文本
使用matplotlib.pyplot.annotate()函数可以直接实现带文本的箭头,支持自定义箭头样式:
import matplotlib.pyplot as plt fig, ax = plt.subplots(figsize=(5,5)) ax.set_xlim(0, 10) ax.set_ylim(0, 10) # 水平箭头带文本 ax.annotate('向右指向', xy=(8, 5), # 箭头终点坐标 xytext=(2, 5), # 文本位置坐标 arrowprops=dict(facecolor='black', shrink=0.05), fontsize=12, ha='center') # 弧形箭头带文本 ax.annotate('弧形箭头', xy=(8, 8), xytext=(2, 2), arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=0.3'), fontsize=12) plt.axis('equal') plt.axis('off') plt.show()
参数说明:
xy:箭头指向的终点坐标xytext:文本所在的起始坐标arrowprops:设置箭头颜色、样式、弧度等属性
三、圆形分割为四部分
利用matplotlib.patches.Wedge类绘制扇形,四个90度扇形组合成完整圆形:
import matplotlib.pyplot as plt import matplotlib.patches as patches import numpy as np fig, ax = plt.subplots(figsize=(5,5)) ax.set_xlim(-5, 5) ax.set_ylim(-5, 5) # 圆心(0,0),半径4,四个扇形分别对应0-90°、90-180°、180-270°、270-360° colors = ['lightblue', 'lightgreen', 'lightyellow', 'lightpink'] start_angles = [0, 90, 180, 270] for idx in range(4): # 绘制扇形 wedge = patches.Wedge((0,0), 4, start_angles[idx], start_angles[idx]+90, linewidth=2, edgecolor='black', facecolor=colors[idx]) ax.add_patch(wedge) # 给每个扇形添加中心标注 mid_angle = start_angles[idx] + 45 x = 2 * np.cos(np.radians(mid_angle)) y = 2 * np.sin(np.radians(mid_angle)) ax.text(x, y, f'区域{idx+1}', fontsize=12, ha='center', va='center') plt.axis('equal') plt.axis('off') plt.show()
内容的提问来源于stack exchange,提问作者Evelina N
相关产品推荐
相关产品推荐

