对数坐标轴中的负轴

6

我正在使用matplotlib绘制对数图。 我的值从1到35。

fig=plt.figure(figsize=(7,7))
fig.subplots_adjust(top=0.75, right=0.9)
ax=fig.add_subplot(111)
ax.plot(x, y, marker='o', color='black', ls='')
ax.set_xscale('log')
ax.set_yscale('log')

我希望将x轴和y轴的起始值设定为小于1的值,但如果我使用

ax.axis([-10,45,-10,45])

它不能正常工作。我知道这是因为我正在使用对数刻度,但是否有一种方法可以解决问题并获得我想要的轴?


@tcaswell 我认为 OP 实际上想要具有负值的轴,因为帖子的标题以及要绘制的值范围从 1 到 35 都已经指定了。使用 [1e-10, 1e45, 1e-10, 1e45] 的轴限制将非常难以以任何信息化的方式表示这些数据,因为限制比实际数据大几个数量级。 - sodd
@nordev 啊,我错过了那个。 - tacaswell
1个回答

12

使用'symlog'参数来设置 ax.set_xscale, 因为这在接近零的小区间内是线性的,在其他地方则是对数的。

您甚至可以使用关键字参数linthreshx(对于ax.set_yscalelinthreshy)设置希望轴线是线性的区间,它接受一个由负极限和正极限组成的元组,即linthreshx=(-linthresh,linthresh)或简单地linthreshx=linthresh

ax.set_xscale('symlog')
ax.set_yscale('symlog')
ax.axis([-10,45,-10,45])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接