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

如何在对数坐标轴下使用axline绘制直线?

问题与解决方法

问题

线性刻度下,用axline绘制过原点的直线能正常显示:

fig, ax = plt.subplots()

l2 = ax.axline(xy1=(0, 0), slope=0.3)

ax.set_xlim(0.1, 10)
ax.set_ylim(0.1, 10)

但切换为对数刻度后,绘图区域为空:

fig, ax = plt.subplots()

l2 = ax.axline(xy1=(0, 0), slope=0.3)

ax.set_xlim(0.1, 10)
ax.set_ylim(0.1, 10)

ax.set_xscale('log')
ax.set_yscale('log')

原因

对数坐标中0没有定义(log(0)无意义),axline以(0,0)为起点,无法在对数刻度下渲染这条直线。

解决方案

方法1:用对数范围内的点定义直线

选择坐标轴有效范围内的点(比如(1, 0.3))作为起点,保持斜率不变:

fig, ax = plt.subplots()

# 使用对数刻度有效区间内的点
l2 = ax.axline(xy1=(1, 0.3), slope=0.3)

ax.set_xlim(0.1, 10)
ax.set_ylim(0.1, 10)
ax.set_xscale('log')
ax.set_yscale('log')

方法2:用plot函数生成数据绘制

生成对数区间的x序列,计算对应y值后绘图:

import numpy as np
fig, ax = plt.subplots()

# 生成对数范围内的x值
x = np.logspace(np.log10(0.1), np.log10(10), 100)
y = 0.3 * x
ax.plot(x, y)

ax.set_xlim(0.1, 10)
ax.set_ylim(0.1, 10)
ax.set_xscale('log')
ax.set_yscale('log')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:02:39