Python 如何在Matplotlib中为小于1的值设置日志比例
我使用matplot lib绘制以下数据:Python 如何在Matplotlib中为小于1的值设置日志比例,python,matplotlib,Python,Matplotlib,我使用matplot lib绘制以下数据: x_val = [-(2**24), -(2**23), -(2**22), -2(21)] y_val = [-1/2, -1/4, -1/8, -1/16] I数据关系是线性的,但由于阶跃模式,我想对图形的x轴和y轴使用对数刻度,基数为2 问题是y值为负值,介于0和-1之间。这意味着我不能使用symlog,因为它对小于10的值使用线性刻度。我想知道是否有另一种方法来缩放轴,从而给出十进制数的对数。这是我目前的代码: ax1.set_xscale(
x_val = [-(2**24), -(2**23), -(2**22), -2(21)]
y_val = [-1/2, -1/4, -1/8, -1/16]
I数据关系是线性的,但由于阶跃模式,我想对图形的x轴和y轴使用对数刻度,基数为2
问题是y值为负值,介于0和-1之间。这意味着我不能使用symlog
,因为它对小于10的值使用线性刻度。我想知道是否有另一种方法来缩放轴,从而给出十进制数的对数。这是我目前的代码:
ax1.set_xscale('symlog', basex=2)
ax1.set_yscale('symlog', nonposy='clip')
您可以使用x轴上的
linthresh
(或linthreshx
)更改比例变为线性的值。有关更多信息,请参阅文档
下面是一个示例,将其更改为0.01,将数据绘制为直线:
import matplotlib.pyplot as plt
x_val = [-(2**24), -(2**23), -(2**22), -(2**21)]
y_val = [-1./2., -1./4., -1./8., -1./16.]
fig,ax1 = plt.subplots(1)
ax1.plot(x_val,y_val,'bo-')
ax1.set_xscale('symlog', basex=2)
ax1.set_yscale('symlog', nonposy='clip', linthreshy=0.01)
plt.show()