日志刻度中不正确的mpld3绘图
我在使用mpld3绘图时发现了一个很奇怪的现象。我做了三件事:1. 直接用线性刻度绘制数据。2. 用线性刻度绘制数据的log10值。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, 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')
我是不是漏掉了什么,还是这可能是个bug?页面中包含的JSON数据似乎包含了ylim和ydomain等信息,按理说应该没问题,所以我对这个图表的反向感到非常困惑。
1 个回答
1
一个可能的解决办法是用 plot 来画点,而不是用 scatter。这个问题似乎只出现在 scatter 函数上。所以,不要这样:
ax.scatter(x, y)
而是用这个:
ax.plot(x, y, marker='o', linestyle='')