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

Matplotlib子图布局问题:散点图与雷达图并排显示故障排查

解决Matplotlib散点图与雷达图等尺寸并排的布局问题

问题根源

把散点图(笛卡尔坐标系)和雷达图(极坐标系)放在同一画布时,thetagrids出现异常主要是因为:

  • 雷达图需要正方形画布才能正常显示圆形,默认子图比例不对会导致角度网格变形
  • 混合坐标布局时,极坐标轴的初始化参数被默认布局覆盖,引发网格渲染错误
  • 画布整体布局约束挤压了极坐标子图的显示空间

实用解决方案

1. 给雷达图强制设置1:1宽高比

直接在创建极坐标子图时指定aspect='equal',同时用subplots创建等宽子图:

import matplotlib.pyplot as plt
import numpy as np

# 创建1行2列的子图,设置画布尺寸适配等宽显示
fig, (ax_scatter, _) = plt.subplots(1, 2, figsize=(10, 5))

# 绘制散点图
x = np.random.rand(50)
y = np.random.rand(50)
ax_scatter.scatter(x, y)
ax_scatter.set_title('散点图')

# 单独创建雷达图的极坐标子图,强制等宽高比
ax_radar = plt.subplot(1, 2, 2, polar=True)
ax_radar.set_aspect('equal')

# 雷达图数据示例
theta = np.linspace(0, 2*np.pi, 5, endpoint=False)
r = np.random.rand(5)
ax_radar.plot(theta, r)

# 自定义角度网格,这里设置为每72度一个刻度
ax_radar.set_thetagrids(np.arange(0, 360, 72))
ax_radar.set_title('雷达图')

# 自动调整子图间距,避免重叠
plt.tight_layout()
plt.show()

2. 用GridSpec灵活控制多子图布局

如果后续要添加第三个图,GridSpec能精准控制每个子图的尺寸,确保雷达图保持正方形:

import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
import numpy as np

fig = plt.figure(figsize=(12, 4))
# 1行3列,三个子图等宽
gs = GridSpec(1, 3, width_ratios=[1, 1, 1])

# 第一个子图:散点图
ax1 = fig.add_subplot(gs[0])
ax1.scatter(np.random.rand(50), np.random.rand(50))
ax1.set_title('散点图')

# 第二个子图:雷达图(极坐标+等宽高比)
ax2 = fig.add_subplot(gs[1], polar=True)
ax2.set_aspect('equal')
theta = np.linspace(0, 2*np.pi, 5, endpoint=False)
ax2.plot(theta, np.random.rand(5))
ax2.set_thetagrids(np.arange(0, 360, 72))
ax2.set_title('雷达图')

# 第三个子图:示例图,可替换为你需要的图表类型
ax3 = fig.add_subplot(gs[2])
ax3.bar(['A','B','C'], [3,5,2])
ax3.set_title('柱状图')

plt.tight_layout()
plt.show()

3. 避开轴参数冲突的坑

  • 混合坐标的子图不要使用sharex/sharey,极坐标和笛卡尔坐标的轴参数不兼容
  • 创建雷达图时必须明确指定polar=True,避免继承其他子图的轴设置
  • 调用set_thetagrids之前,确保极坐标轴已经完全初始化

必看注意点

  • 雷达图必须是正方形才能显示正圆形,aspect='equal'参数不能省略
  • 用tight_layout()自动调整子图间距,防止标题、刻度挤在一起
  • 添加新图时,保持雷达图所在子图的宽高比为1:1,其他图可按需调整

内容的提问来源于stack exchange,提问作者pkpto39

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:10:35