matplotlib在某些数据集上生成奇怪的y轴?

时间:2016-08-09 16:12:32

标签: python python-2.7 numpy matplotlib

我正在编写一个python 2.7脚本,它在一个循环中生成多个matplotlib图。

import matplotlib.pyplot as plt
import numpy as np

这里我缩放数据,因此第一个点是100

scalefac = 100/float(sdata[0])
for dat in range(len(sdata)):
    sdata[dat] = float(sdata[dat])*scalefac

然后绘制它。

y = sdata
x = np.arange(0, len(sdates))

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
aaa = tuple(sdates)
ax.scatter(x,y)
ax.plot(x,y)
plt.xticks(x,aaa)

plt.xlabel('date of run (mm/dd/yy)')
plt.ylabel('power % of baseline')
plt.title('Power Estimation Over Time')
plt.grid(True)
plt.savefig("dump/graph.%s.png" % str(dirlist[d])) 
plt.close(fig)

这似乎工作正常,但只有在y数据不太靠近时才能正常工作。例如,当y为[100,95]或[100,100,110]时,y轴具有正确的单位,并且点位于正确的位置。当y为[100,100]或[100,100.5]时,y轴的单位为.1,数据绘制在〜。

如果它经过两次循环,一次是[100,95]而另一次是[100,100.5],则只能正确绘制[100,95]。

错误的图表:

bad graph

好图:

good graph

到底是什么?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,问题就是偏移,例如router.navigate([URL]),您希望将其标记为0.0002 + 9.9998e1,对吗?如果是这样this answer可能会对您有所帮助。

如果您认为阅读时间过长,请参阅快速代码示例。关键是100,它会关闭y值的格式。

ax.get_yaxis().get_major_formatter().set_useOffset(False)

enter image description here