jxn*_*jxn 10 python matplotlib pandas
我试图绘制按年份分组的数据,并且每年,我想计算用户数量。下面,我只是将日期列从浮点数转换为整数。
如果你看到 x 轴,我的年份代码似乎变成了一个浮点数,并且每个代码间隔 0.5 个刻度。
我如何使这纯粹是一个整数?
将年份列转换为字符串格式后,刻度仍然相隔 2 个空格
df['year'] = df['year'].astype(str)
Run Code Online (Sandbox Code Playgroud)
Imp*_*est 13
使用整数数据会导致 matplotlib 轴仅显示整数的期望是不合理的。最后,每个轴都是一个数字浮点轴。
刻度和标签由定位器和格式器确定。并且 matplotlib 不知道您只想绘制整数。
一些可能的解决方案:
默认定位器是 a AutoLocator,它接受一个属性integer。因此,您可以将此属性设置为True:
ax.locator_params(integer=True)
Run Code Online (Sandbox Code Playgroud)
例子:
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()
Run Code Online (Sandbox Code Playgroud)
您可以使用 仅勾选数据框中存在的年份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()
Run Code Online (Sandbox Code Playgroud)
您可以将年份列转换为日期。对于日期,更好的刻度标签会自动发生。
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()
Run Code Online (Sandbox Code Playgroud)
在所有情况下,您都会得到如下信息: