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

如何将Matplotlib极坐标角度标签间隔从45°改为15°?

修改Matplotlib极坐标角度标签间隔为15°

我来帮你搞定这个需求!要把Matplotlib默认的极坐标角度标签从45°间隔改成15°,只需要给极坐标轴设置自定义的角度刻度即可,下面是具体的修改方案和完整代码:

关键修改点

Matplotlib极坐标的角度默认使用弧度,所以我们需要生成15°间隔的弧度数组,然后通过ax.set_xticks()方法替换默认刻度:

  • 15°对应的弧度是π/12(因为180°=π,所以1°=π/180,15°=15*π/180=π/12)
  • 生成从0到2π(即0°到360°)、步长为π/12的数组,就能得到15°间隔的刻度

另外,原代码里用3.1415926代替π,建议换成np.pi更准确规范;同时文件读取用with语句会更安全。

修改后的完整代码

import matplotlib.pyplot as plt
import numpy as np

def processDir(file, output, title):
    angles = list()
    values = list()
    # 用with语句安全读取文件
    with open(file, 'r') as f:
        lines = [line.rstrip('\n') for line in f]
    for line in lines:
        stringElement = str.split(line, " ")
        # 处理数据行的空格分隔问题
        if len(stringElement) >=2:
            angle = int(stringElement[0])
            value = float(stringElement[1])
            # 用np.pi替代硬编码的圆周率,更准确
            angles.append((angle/360)*2*np.pi)
            values.append(value)
    
    ax = plt.subplot(111, projection='polar')
    plt.polar(angles, values, label=title, color="darkviolet")
    
    # --- 核心修改:设置15°间隔的角度刻度 ---
    # 生成15°间隔的弧度数组(0到2π,步长π/12)
    ax.set_xticks(np.arange(0, 2*np.pi, np.pi/12))
    # 可选:将刻度标签显示为角度值(比如0°、15°...),默认显示弧度
    ax.set_xticklabels([f'{int(rad*180/np.pi)}°' for rad in ax.get_xticks()])
    
    ax.legend(bbox_to_anchor=(0., 1.1, -1., .102), loc=3, ncol=2, mode="expand", borderaxespad=0., frameon=False)
    ax.grid(True)
    
    axmin = ax.get_rmin()
    axmax = ax.get_rmax()
    step = 6
    axlist = np.arange(axmin, axmax + step, step)
    ax.set_rticks(axlist)
    
    ax.figure.set_size_inches(8, 5)
    plt.savefig(output)
    plt.show()

processDir("test.txt", "polar_plot.png", "My Title")

额外说明

  • 你的test.txt数据已经包含了15°间隔的角度值,所以绘图时数据点会完美匹配新的刻度间隔
  • 如果不需要显示角度标签(比如保留弧度),可以去掉ax.set_xticklabels()这一行
  • 运行代码后,极坐标图的角度标签就会变成0°、15°、30°...345°的15°间隔样式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:37:33