python - 以 2 为底的对数刻度

标签 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)

enter image description here

点呈现,但我不知道如何使比例在两个轴上以 2 为底进行对数。我希望每个增量都能使值加倍,例如x 增量应为 0、256、512、1024、2048(字节),y 增量应为分钟,其中数据现在以秒为单位:0、1、2、4、8、16、32。

可以吗?

最佳答案

您想要的是对数 标度(而不是指数标度)。我想这就是你自己找不到答案的原因,否则你很容易到达 corresponding matplotlib example .

以下应该有效(与您的要求唯一不同的是轴标签的形式为 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)

关于python - 以 2 为底的对数刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44082563/

相关文章:

python - 使用 Pygame 处理 MVC 模式中的动画

python - 运行时错误: main thread is not in main loop using Matplotlib with Django

python - virtualenv 找不到 python2

python - 增加 matplotlib 字符串字体大小

python - 我如何使用 matplotlib 使用非数值为绘图着色?

python-3.x - 找到两个方程的交集

python - 在 python 中的图例中添加一个 fill_between

python - Matplotlib 箱线图 x 轴

python - 使用 Python 从文本文件中获取某些单词和短语

python - 程序文件目录中的 IO