在使用matplotlib版本1.5.1和python 2.7.11时,我注意到我需要手动指定y中的限制,否则只会绘制最大的y值点。数组的行为也是如此。
如果我移除第一个点,我会得到更多的点,但不是所有的点。
我不记得以前有过像这样手动设置限制的情况-为什么是这里?

import matplotlib.pyplot as plt
X = [0.997, 2.643, 0.354, 0.075, 1.0, 0.03, 2.39, 0.364, 0.221, 0.437]
Y = [15.487507, 2.320735, 0.085742, 0.303032, 1.0, 0.025435, 4.436435,
0.025435, 0.000503, 2.320735]
plt.figure()
plt.subplot(1,2,1)
plt.scatter(X, Y)
plt.xscale('log')
plt.yscale('log')
plt.subplot(1,2,2)
plt.scatter(X, Y)
plt.xscale('log')
plt.yscale('log')
plt.ylim(0.5*min(Y), 2.0*max(Y)) # why is this line necessary?
plt.title('added plt.ylim()')
plt.show()发布于 2016-08-06 10:25:09
出现问题的原因是,您首先绘制了散点图,然后将比例设置为对数,这会导致放大效果。这就解决了这个问题:
plt.xscale('log')
plt.yscale('log')
plt.scatter(X, Y)这会产生预期的结果。(你问题中的第二个小情节。)
发布于 2016-08-06 10:30:34
似乎matplotlib在转换为对数刻度之前创建了y轴刻度,然后没有根据更改重新创建刻度。第一个子图上的y轴从10e1开始,而不是10e-3。因此,在绘制之前更改比例。
plt.xscale('log')
plt.yscale('log')
plt.scatter(X, Y)我认为如果你在对数标度旁边绘制原始标度,你也许能够找出matplotlib对轴的部分处理的答案。在对数刻度中,没有真正的0 --因为log(0)是未定义的。所以坐标必须从大于0的某个地方开始,这就产生了问题。X轴的范围从0到3,但y轴的范围从0到16。当转换为对数时,matplotlib会正确缩放x轴,但由于y的因子为10,因此未进行缩放。
https://stackoverflow.com/questions/38799968
复制相似问题