如何为散点图上的每个点添加标签?Matplotlib库

2024-09-30 16:21:53 发布

您现在位置:Python中文网/ 问答频道 /正文

这里是第一个帖子。开始玩弄python中的NFLScrapr包,并试图创建一个散点图来显示一些信息。现在散点图只显示点,但我想知道是否有一种方法可以从相应的数据中为每个图添加标签?在

从这个开始

league_rushing_success = data.loc[(data['play_type']=='run') & (data['down']<=4)].groupby(by='posteam')[['epa','success','yards_gained']].mean()

想用这个来策划

^{pr2}$

我得到的错误是

KeyError                                  Traceback (most recent call last)
//anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   2656             try:
-> 2657                 return self._engine.get_loc(key)
   2658             except KeyError:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'posteam'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-81-ebdc88aed0ac> in <module>
      2 x = league_rushing_success['success'].values
      3 y = league_rushing_success['epa'].values
----> 4 types = league_rushing_success['posteam'].values
      5 
      6 fig, ax = plt.subplots(figsize=(10,10))

//anaconda3/lib/python3.7/site-packages/pandas/core/frame.py in __getitem__(self, key)
   2925             if self.columns.nlevels > 1:
   2926                 return self._getitem_multilevel(key)
-> 2927             indexer = self.columns.get_loc(key)
   2928             if is_integer(indexer):
   2929                 indexer = [indexer]

//anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   2657                 return self._engine.get_loc(key)
   2658             except KeyError:
-> 2659                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   2660         indexer = self.get_indexer([key], method=method, tolerance=tolerance)
   2661         if indexer.ndim > 1 or indexer.size > 1:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'posteam'

enter image description here


Tags: keyinselfpandasgetindexloclibs
1条回答
网友
1楼 · 发布于 2024-09-30 16:21:53

由于posteam是一个索引,所以这一行给出了一个错误:

# error
types = league_rushing_success['posteam'].values

# try this
types = league_rushing_success.reset_index()['posteam'].values

从您的代码中也不太清楚x_coords和{}的含义(也会给您一个错误):

^{pr2}$

如果要向绘图添加标签,最好查看^{}

# I would use something like this instead of `plt.text`
for i, txt in enumerate(types):
    ax.annotate(txt, (x[i], y[i]), xytext=(10,10), textcoords='offset points')
    plt.scatter(x, y, marker='x', color='red')

总结一下:

x = league_rushing_success['success'].values
y = league_rushing_success['epa'].values
types = league_rushing_success.reset_index()['posteam'].values

fig, ax = plt.subplots(figsize=(10,10))
ax.scatter(x, y)

ax.set_xlabel('Rush Success Rate', fontsize=14)
ax.set_ylabel('EPA', fontsize=14)
ax.set_title('Rush Success Rate and EPA', fontsize=18)

for i, txt in enumerate(types):
    ax.annotate(txt, (x[i], y[i]), xytext=(10,10), textcoords='offset points')
    plt.scatter(x, y, marker='x', color='red')

enter image description here

点是随机生成的,但打印样式应该相同。在

我希望这有帮助。在

相关问题 更多 >