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
Adding data labels to linechart
提问by Martin598
I would like to add data labels on top of the circles of this graph with pandas/matplotlib.
我想用 pandas/matplotlib 在这个图的圆圈顶部添加数据标签。
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 annotate
should 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()