如何在matplotlib中显示y值有很大差异的多个图?

时间:2016-05-05 09:15:12

标签: python matplotlib

说我想在matplotlib中创建一个数字。我想要多个图,其中一些值远远不是其他图。即:

import matplotlib.pyplot as plt
plt.plot([0, 1, 2, 3, 4], [6.4, 6.7, 6.3, 7.5, 6.6])
plt.plot([0, 1, 2, 3, 4], [57.8, 61.7, 57.8, 57.5, 60.5])
plt.plot([0, 1, 2, 3, 4], [54.8, 53.3, 55.0, 55.2, 54.9])
plt.plot([0, 1, 2, 3, 4], [5400.0, 5362.9, 5333.9, 5206.4, 5333.1])
plt.plot([0, 1, 2, 3, 4], [538167.4, 506828.5, 506889.6, 507461.0, 509221.0])
plt.plot([0, 1, 2, 3, 4], [51024218.8, 51006151.4, 50929451.5, 51382173.5, 51204708.1])
plt.savefig('help.png')

这是与上面的行相对应的数字:

Matplotlib figure

但是你会注意到,你甚至无法看到大部分地块(你可以发现2-3个地块)总共6个。这些线路是否有办法出现而没有聚集向上,以便你可以看到每一行?

2 个答案:

答案 0 :(得分:1)

我的建议是在y轴上放置一个对数轴,例如:

import matplotlib.pyplot as plt
plt.plot([0, 1, 2, 3, 4], [6.4, 6.7, 6.3, 7.5, 6.6])
plt.plot([0, 1, 2, 3, 4], [57.8, 61.7, 57.8, 57.5, 60.5])
plt.plot([0, 1, 2, 3, 4], [54.8, 53.3, 55.0, 55.2, 54.9])
plt.plot([0, 1, 2, 3, 4], [5400.0, 5362.9, 5333.9, 5206.4, 5333.1])
plt.plot([0, 1, 2, 3, 4], [538167.4, 506828.5, 506889.6, 507461.0, 509221.0])
plt.plot([0, 1, 2, 3, 4], [51024218.8, 51006151.4, 50929451.5, 51382173.5, 51204708.1])
plt.yscale('log')
plt.savefig('help.png')

结果: a busy cat

答案 1 :(得分:0)

参见Matplotlib常见问题解答:

  

经常要求左右y轴有两个刻度,这可能是使用twinx()(目前不支持两个以上刻度,尽管它在愿望中列表)。

http://matplotlib.org/faq/howto_faq.html#multiple-y-axis-scales