我在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等,所以我很难理解图形是如何反转的。
答案 0 :(得分:1)
一种可能的解决方法是使用绘图而不是散射来绘制点。该错误似乎只是散点函数的问题。所以而不是:
ax.scatter(x, y)
使用它:
ax.plot(x, y, marker='o', linestyle='')