Python 如何从dataframe列编辑matplotlib打印标签?
我有一个熊猫数据框。dataframe将日期作为索引和变量。作为一个玩具例子,下面的简单数据框:Python 如何从dataframe列编辑matplotlib打印标签?,python,matplotlib,Python,Matplotlib,我有一个熊猫数据框。dataframe将日期作为索引和变量。作为一个玩具例子,下面的简单数据框: date var1 2001-03-01 00:00 1 2002-03-01 00:00 2 2003-03-01 00:00 3 2004-03-01 00:00 4 我想使用matplotlib绘制var1与date。当
date var1
2001-03-01 00:00 1
2002-03-01 00:00 2
2003-03-01 00:00 3
2004-03-01 00:00 4
我想使用matplotlib绘制var1
与date
。当我尝试以下方法时:
df["var1"].plot()
plt.show()
我得到了我想要的绘图,但在
x
轴上我有完整的日期/时间(例如2002-03-01 00:00
),而我只想显示2002
。有(简单的)方法吗?看看第一个例子。x
记号的标签用以下行指定:
plt.xticks(x, labels, rotation='vertical')
第一个参数是带有记号索引的列表,第二个参数是标签列表。在您的情况下,您可以使用以下命令从第一列获取日期:
labels = df['date'].tolist()
其中,df
是您的数据帧。然后,您可以在此列表上执行操作,例如,仅选择带有年份的子字符串:
>>> labels = ['2001-03-01 00:00', '2001-03-01 00:00']
>>> newlabels = [x[:4] for x in labels]
>>> newlabels
['2001', '2001']
然后在第一个命令中将该列表用作标签
因此,结合所有方面:
import matplotlib.pyplot as plt
import pandas as pd
c1 = ['2001-03-01 00:00','2002-03-01 00:00','2003-03-01 00:00','2004-03-01 00:00']
c2 = [1,2,3,4]
df = pd.DataFrame(data={'date':c1,'var1':c2})
df['var1'].plot()
labels = df['date'].tolist()
newlabels = [x[:4] for x in labels]
plt.xticks(range(len(newlabels)), newlabels)
plt.show()
返回:
请看第一个示例。
x
记号的标签用以下行指定:
plt.xticks(x, labels, rotation='vertical')
第一个参数是带有记号索引的列表,第二个参数是标签列表。在您的情况下,您可以使用以下命令从第一列获取日期:
labels = df['date'].tolist()
其中,df
是您的数据帧。然后,您可以在此列表上执行操作,例如,仅选择带有年份的子字符串:
>>> labels = ['2001-03-01 00:00', '2001-03-01 00:00']
>>> newlabels = [x[:4] for x in labels]
>>> newlabels
['2001', '2001']
然后在第一个命令中将该列表用作标签
因此,结合所有方面:
import matplotlib.pyplot as plt
import pandas as pd
c1 = ['2001-03-01 00:00','2002-03-01 00:00','2003-03-01 00:00','2004-03-01 00:00']
c2 = [1,2,3,4]
df = pd.DataFrame(data={'date':c1,'var1':c2})
df['var1'].plot()
labels = df['date'].tolist()
newlabels = [x[:4] for x in labels]
plt.xticks(range(len(newlabels)), newlabels)
plt.show()
返回:
日期是字符串吗?我不确定,我怎么才能知道呢?。。。我想这是你写的代码。如果你不能告诉我们,那么给我们看你制作数据帧的代码。我认为它是一个字符串。数据来自另一个来源,我没有生成它,我只是想绘制一个变量。@km1234告诉我们打印类型(df[“date”][1])是什么意思。这将告诉我们日期的类型。日期是字符串吗?我不确定,我如何才能找到?。。。我想这是你写的代码。如果你不能告诉我们,那么给我们看你制作数据帧的代码。我认为它是一个字符串。数据来自另一个来源,我没有生成它,我只是想绘制一个变量。@km1234告诉我们打印类型(df[“date”][1])是什么意思。这将告诉我们日期的类型。