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

Matplotlib:极坐标图中set_rscale('log')设置无效问题排查

解决Matplotlib 3.3.4对数极坐标图的posx/posy错误问题

我之前在Matplotlib 3.3.x版本里碰到过完全一样的问题,这个错误是因为该版本对数极坐标的刻度生成逻辑有bug——当你的半径范围(1到2)比较窄时,自动生成的对数刻度会出现非有限值,导致绘图时坐标计算失败,调换set_rlim和set_rscale的顺序也没法解决这个底层逻辑问题。

下面给你两个可行的解决方案:

方案一:手动指定半径刻度(适配3.3.4版本)

直接跳过Matplotlib自动生成无效刻度的步骤,手动设置符合你r范围的合理刻度:

import numpy as np
import matplotlib.pyplot as plt

r = np.arange(1, 2, 0.01)
theta = 2 * np.pi * r

fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)

# 先设置对数刻度类型
ax.set_rscale('log')
# 手动指定在1-2范围内的对数刻度值,避免自动生成无效刻度
ax.set_yticks([1, 1.2, 1.4, 1.6, 1.8, 2])
# 锁定半径范围
ax.set_rlim((1, 2))

ax.grid(True)
plt.show()

这里用set_yticks指定极坐标的半径刻度,因为在极坐标轴里,半径对应的是y轴刻度,这样就不会触发那些导致错误的自动刻度计算了。

方案二:升级Matplotlib版本

这个对数极坐标的bug在Matplotlib 3.4.0及以上版本已经被官方修复了,如果你能升级版本,原来的代码不管set_rlim和set_rscale的顺序,都能正常运行。升级命令可以用:

pip install --upgrade matplotlib>=3.4.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:12:42