You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:00:09