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

如何实现matplotlib绘制的多个gauge仪表盘图表并排展示

实现方案

核心思路是通过matplotlib的子图网格预分配位置,修改gauge函数支持传入自定义坐标轴对象,将每个仪表盘绘制到指定子图位置即可实现并排效果。

第一步:修改gauge函数

找到你当前使用的gauge函数定义,调整函数参数和初始化逻辑,支持外部传入ax:

def gauge(labels, colors, arrow, title, ax=None):
    # 新增ax参数,默认值为None
    if ax is None:
        # 没有传入ax时才新建画布和坐标轴
        fig, ax = plt.subplots(subplot_kw={'projection': 'polar'}, figsize=(2,2))
    # 后面原来的gauge绘制逻辑保持不变,所有绘图操作都用上面的ax对象即可
    # *注意:原函数中如果有单独创建画布、设置全局画布尺寸、直接调用plt.show()的代码需要删除或增加判断逻辑,避免重复创建画布*

第二步:调用时创建子图网格,分别传入对应ax

import matplotlib.pyplot as plt

# 创建1行3列的子图,统一设置极坐标投影,调整画布尺寸适配三个仪表盘
fig, axs = plt.subplots(nrows=1, ncols=3, subplot_kw={'projection': 'polar'}, figsize=(12, 4))

# 分别给三个gauge传入对应位置的ax
gauge(labels=['LOW','MEDIUM','HIGH','EXTREME'], 
      colors=['#007A00','#0063BF','#FFCC00','#ED1C24'], 
      arrow=3, title='something', ax=axs[0]) 

gauge(labels=['LOW','MEDIUM','HIGH','EXTREME'], 
      colors=['#007A00','#0063BF','#FFCC00','#ED1C24'], 
      arrow=3, title='anything', ax=axs[1]) 

gauge(labels=['LOW','MEDIUM','HIGH','EXTREME'], 
      colors=['#007A00','#0063BF','#FFCC00','#ED1C24'], 
      arrow=3, title='nothing', ax=axs[2])

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

常见调整项

  • 如果想要上下排布,修改nrows=3, ncols=1即可
  • 调整figsize的宽高参数可以改变整体画布大小和仪表盘比例
  • 调整tight_layout()的pad参数可以控制子图之间的间距

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:42:00