yticks()中的Matplotlib开发应用程序问题

时间:2018-11-12 19:47:04

标签: matplotlib

我在python中有这段代码,它的坐标y不变,plt.yticks指令不变,有帮助吗?

import matplotlib.pyplot as plt
year = [1927, 1934, 1947, 1957, 1965, 1977, 1987, 1997]
population = [2968540, 3213174, 4816185, 6536109, 8261527, 12497000,16635199,19184543]

plt.plot(year,population,color="red")

plt.title("Iraq Population 1927-1997")
plt.xlabel('Year')
plt.ylabel("Population")


plt.yticks([0, 4, 8, 12, 16, 20], ["0m", "4m", "8m", "12m", "16m", "20m"])

plt.grid()
plt.show()

2 个答案:

答案 0 :(得分:2)

您在y轴上有数以百万计的人,但想要在0, 4, 8, 12, 1620处打勾。

我建议尝试

plt.yticks([0e6, 4e6, 8e6, 12e6, 16e6, 20e6], ["0m", "4m", "8m", "12m", "16m", "20m"])

答案 1 :(得分:1)

这是matplotlib.ticker.EngFormatter的典型用例。

import matplotlib.pyplot as plt
from matplotlib.ticker import EngFormatter

year = [1927, 1934, 1947, 1957, 1965, 1977, 1987, 1997]
population = [2968540, 3213174, 4816185, 6536109, 8261527, 12497000,16635199,19184543]

plt.plot(year,population,color="red")

plt.title("Iraq Population 1927-1997")
plt.xlabel('Year')
plt.ylabel("Population")

plt.gca().yaxis.set_major_formatter(EngFormatter())

plt.grid()
plt.show()

enter image description here

请注意,EngFormatter使用大写M表示百万,因为这是SI system中的标准。