Python 以2为底的对数标度

Python 以2为底的对数标度,python,matplotlib,Python,Matplotlib,我有以下几对点,我想用对数标度绘制 import matplotlib.pyplot as plt f, ax = plt.subplots(1) xdata = [256, 512, 1024, 2048] ydata = [1, 2, 30, 150] ax.scatter(xdata, ydata) ax.set_ylim(ymin=0) ax.set_xlim(xmin=0) plt.show(f) 点渲染,但我不知道如何使比例在两个轴上以2为底对数。我希望每个增量都是该值的两倍,例

我有以下几对点,我想用对数标度绘制

import matplotlib.pyplot as plt
f, ax = plt.subplots(1)
xdata = [256, 512, 1024, 2048]
ydata = [1, 2, 30, 150]
ax.scatter(xdata, ydata)
ax.set_ylim(ymin=0)
ax.set_xlim(xmin=0)
plt.show(f)

点渲染,但我不知道如何使比例在两个轴上以2为底对数。我希望每个增量都是该值的两倍,例如,x增量应为0、256、512、1024、2048(字节),y增量应为分钟,此时数据以秒为单位:0、1、2、4、8、16、32

这可以做到吗?

你想要的是对数尺度(而不是指数尺度)。我想这就是你自己找不到答案的原因,否则你很容易找到答案

以下操作应该有效(与您的要求唯一不同的是轴标签采用2n的形式,而不是普通数字):

import matplotlib.pyplot as plt
f, ax = plt.subplots(1)
xdata = [256, 512, 1024, 2048]
ydata = [1, 2, 30, 150]
plt.xscale('log', basex=2)
plt.yscale('log', basey=2)
ax.scatter(xdata, ydata)
ax.set_ylim(ymin=0)
plt.show(f)