Python 对数比例中的mpld3打印不正确
在mpld3中绘图时,我注意到一个非常令人费解的行为。我做了三件事:1。按线性比例绘制数据。2.以线性比例绘制数据的对数10。3.在对数刻度上绘制原始数据。图2和图3看起来应该是一样的,但它们不是。在图3中,y轴似乎是反转的 备选案文1Python 对数比例中的mpld3打印不正确,python,matplotlib,plot,Python,Matplotlib,Plot,在mpld3中绘图时,我注意到一个非常令人费解的行为。我做了三件事:1。按线性比例绘制数据。2.以线性比例绘制数据的对数10。3.在对数刻度上绘制原始数据。图2和图3看起来应该是一样的,但它们不是。在图3中,y轴似乎是反转的 备选案文1 import numpy as np import matplotlib import matplotlib.pyplot as plt import mpld3 from mpld3 import plugins, utils x = [1, 10, 100
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等,因此我对图形是如何反转的感到非常困惑 一种可能的解决方法是使用绘图而不是散布来绘制点。这个bug似乎只是散射函数的一个问题。因此,不是:
ax.scatter(x, y)
使用以下命令:
ax.plot(x, y, marker='o', linestyle='')
使用
matplotlib
v1.3.1的一些测试数据,我得到的结果与预期完全一致,没有任何反转。如果可能,您可以提供再现错误的最小工作示例,例如使用一些测试数据。还要检查matplotlib
版本。我添加了更多代码。如何检查matplotlib版本?我在过去一个月内安装了它,所以我希望它是相当最新的。谢谢。好的,我导入了matplotlib并打印了matplotlib。版本为,给出了1.3.1。好的,我可以确认这在mpld3
0.2版中也发生过。对不起,我没发现你在用这个。它似乎正在切换x轴和y轴(尝试播放数据以查看此情况)。它看起来不像是在交换轴,例如使用x=[1100,10000,1000000];y=[4,8,16,32]。但是y轴反转,两个轴上的值与您期望的不匹配(例如,我期望点与x轴上的0、2、4和6对齐,但它们不匹配)。