使用整数数据将导致 matplotlib 轴仅显示整数的期望是不合理的。最后,每个轴都是一个数字浮点轴。
刻度和标签由定位器和格式化程序确定。而且 matplotlib 不知道您只想绘制整数。
一些可能的解决方案:
告诉默认定位器使用整数
默认定位器是AutoLocator
,它接受一个属性integer
。所以你可以将此属性设置为True
:
ax.locator_params(integer=True)
Example:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.DataFrame({"year" : [2010,2011,2012,2013,2014],
"count" :[1000,2200,3890,5600,8000] })
ax = data.plot(x="year",y="count")
ax.locator_params(integer=True)
plt.show()
使用固定定位器
您可以使用以下方法仅勾选数据框中存在的年份ax.set_ticks()
.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.DataFrame({"year" : [2010,2011,2012,2013,2014],
"count" :[1000,2200,3890,5600,8000] })
data.plot(x="year",y="count")
plt.gca().set_xticks(data["year"].unique())
plt.show()
将年份转换为日期
您可以将年份列转换为日期。对于日期,会自动进行更好的刻度标记。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.DataFrame({"year" : [2010,2011,2012,2013,2014],
"count" :[1000,2200,3890,5600,8000] })
data["year"] = pd.to_datetime(data["year"].astype(str), format="%Y")
ax = data.plot(x="year",y="count")
plt.show()
在所有情况下你都会得到这样的结果: