熊猫绘图 - x 轴被转换为浮点数

jxn*_*jxn 10 python matplotlib pandas

我试图绘制按年份分组的数据,并且每年,我想计算用户数量。下面,我只是将日期列从浮点数转换为整数。

这是我的阴谋在此处输入图片说明

如果你看到 x 轴,我的年份代码似乎变成了一个浮点数,并且每个代码间隔 0.5 个刻度。

我如何使这纯粹是一个整数?


更改 groupby 具有相同的结果: 在此处输入图片说明


将年份列转换为字符串格式后,刻度仍然相隔 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)

在所有情况下,您都会得到如下信息:

在此处输入图片说明