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

如何在Matplotlib极坐标轴中仅显示一条网格线并隐藏其余网格线?

解决极坐标图仅保留0~180°网格线的问题

要实现仅保留0~180°之间的水平网格线(极坐标中对应角向射线网格),可以通过控制极坐标的角度刻度来实现,具体方案如下:

核心思路

极坐标中,角度(theta)对应坐标轴的x轴刻度,单位为弧度(02π对应0°360°)。只需设置xticks仅包含0π(即0°180°)范围内的角度值,就能让对应的网格线显示,其他角度的网格线会自动隐藏。

基础实现代码

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(6, 6))
ax = fig.add_subplot(111, polar=True)
ax.set_yticks([])  # 隐藏径向环形网格线

# 设置0°~180°的弧度刻度(这里取5个等分点:0°,45°,90°,135°,180°)
ax.set_xticks(np.linspace(0, np.pi, 5))
# 开启角向网格线,可自定义样式
ax.grid(True, axis='x', color='gray', linestyle='-')

plt.show()

精细控制(保留全刻度但隐藏部分网格)

如果需要保留所有角度的刻度标签,但仅隐藏180°以外的网格线,可以遍历网格线对象单独控制可见性:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(6, 6))
ax = fig.add_subplot(111, polar=True)
ax.set_yticks([])

# 保留0°~360°的全角度刻度
ax.set_xticks(np.linspace(0, 2*np.pi, 8))
# 遍历网格线,隐藏大于180°(π弧度)的部分
for idx, tick_val in enumerate(ax.get_xticks()):
    if tick_val > np.pi:
        ax.xaxis.get_gridlines()[idx].set_visible(False)

plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:27:23