pandas 将数据标签添加到折线图

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/46063077/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 04:23:56  来源:igfitidea点击:

Adding data labels to linechart

python-2.7pandasmatplotlib

提问by Martin598

I would like to add data labels on top of the circles of this graph with pandas/matplotlib.

我想用 pandas/matplotlib 在这个图的圆圈顶部添加数据标签。

enter image description here

在此处输入图片说明

The data is loaded from an Excel file using pandas and 'Month' as index

数据是从 Excel 文件中加载的,使用 pandas 和“Month”作为索引

#Importing the data
Path = 'xyz.xlsx'
df = pd.read_excel(Path,sheetname=0,index_col='Month')

I then proceed to plot the data using the following code

然后我继续使用以下代码绘制数据

plt.plot(df['Sales1'],marker='o',label='Sales')
plt.show()

I have tried annotating, but can't get it to work.

我试过注释,但无法让它工作。

my dataframe looks like this

我的数据框看起来像这样

           Sales1  Sales2  Sales3
Month                             
2015-08-01   24457   31895   42081
2015-09-01    6926   43584   20666
2015-10-01    4973    4845   10962
2015-11-01   21345   17909   36115
2015-12-01    8639   40668   38215
2016-01-01   48021   18145   25353
2016-02-01    6708   24651   46089
2016-03-01    8827   18617   31215
2016-04-01   49703   14205   26983
2016-05-01    3223   16658    1854
2016-06-01    6484   46503   13523
2016-07-01   41243   18876   20740
2016-08-01   21779   13362   48997
2016-09-01    9494   40242   15477
2016-10-01    1205   10291   32663
2016-11-01   42655   41375   48549
2016-12-01   24644   26002    6602
2017-01-01   33732   44292   45151
2017-02-01   47880   15503    1404
2017-03-01   32499   17755   11135
2017-04-01   42888   31527   25174
2017-05-01   34433    8292   20117
2017-06-01    9884    2359   45424
2017-07-01   35302   24177   48045

回答by mgilbert

Not exactly sure what you tried but annotateshould work. Something similar to the solution discussed hereshould do the trick

不完全确定您尝试了什么,但annotate应该有效。类似于这里讨论的解决方案的东西应该可以解决问题

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(pd.np.random.randn(5,1)*10 + 100,
                  index=pd.date_range("2015-01-01", "2015-01-05"),
                  columns=["Sales1"]).round()

fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot(df['Sales1'], marker='o', label='Sales')

for i,j in df.Sales1.items():
    ax.annotate(str(j), xy=(i, j))

plt.show()

labels

标签