对数刻度中的mpld3绘图不正确

时间:2014-08-07 17:46:13

标签: python matplotlib plot

我在mpld3中绘图时注意到一种非常令人费解的行为。我做了三件事:1。按照线性比例绘制数据。 2.绘制线性刻度数据的log10。 3.在对数刻度上绘制原始数据。图2和图3应该看起来相同,但它们不相同。看起来y轴在图3中反转。

选项1.

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import mpld3
from mpld3 import plugins, utils

x = [1, 10, 100, 1000]
y = [1, 10, 100, 1000]

fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(x, y, s=25, c='orange')
#ax.scatter(np.log10(x), np.log10(y), s=25, c='orange')
#ax.set_xscale('log')
#ax.set_yscale('log')
plugins.connect(fig, plugins.MousePosition())
mpld3.show()

选项2。

#ax.scatter(x, y, s=25, c='orange')
ax.scatter(np.log10(x), np.log10(y), s=25, c='orange')
#ax.set_xscale('log')
#ax.set_yscale('log')

选项3。

ax.scatter(x, y, s=25, c='orange')
#ax.scatter(np.log10(x), np.log10(y), s=25, c='orange')
ax.set_xscale('log')
ax.set_yscale('log')

我错过了什么或者这可能是个错误吗?页面中包含的JSON数据看起来像预期的那样包含ylim和ydomain等,所以我很难理解图形是如何反转的。

1 个答案:

答案 0 :(得分:1)

一种可能的解决方法是使用绘图而不是散射来绘制点。该错误似乎只是散点函数的问题。所以而不是:

ax.scatter(x, y)

使用它:

ax.plot(x, y, marker='o', linestyle='')