Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib在某些数据集上生成奇怪的y轴?_Python_Python 2.7_Numpy_Matplotlib - Fatal编程技术网

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

Python matplotlib在某些数据集上生成奇怪的y轴?,python,python-2.7,numpy,matplotlib,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

我正在编写一个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为[100100]或[100100.5]时,y轴以.1为单位,数据绘制在~.2处

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

坏图:

好图:


怎么回事?

如果我理解正确,问题是偏移量,例如
0.0002+9.9998e1
,您希望将其绘制为
100
,对吗?如果是这样的话,也许对你有帮助

如果您认为它太长而无法阅读,下面是一个快速的代码示例。关键是
ax.get\u yaxis().get\u major\u formatter().set\u usecoffset(False)
,这将关闭y值的格式设置

import matplotlib.pyplot as plt
import numpy as np

x = [0, 1, 2]
y = [100, 100, 100.1]

fig = plt.figure()
ax = fig.add_subplot(2, 1, 1)
ax2 = fig.add_subplot(2, 1, 2)

#  The bad plot
ax.scatter(x,y)
ax.plot(x,y)

# The good plot
ax2.scatter(x,y)
ax2.plot(x,y)
ax2.get_yaxis().get_major_formatter().set_useOffset(False)

plt.show()

你能分享你的“坏”情节吗?@JulienBernu我在