用箭头高亮显示matplotlib条形图上的数据



我想指向用pandas数据帧和matplotlib绘制的条形图上的数据点。如果我使用散点图(用数字数据替换下面数据中的类别,用箭头绘制和高亮显示效果很好(在下面这个琐碎的例子中,如果条件没有被唤起,则会绘制条形图数据,但在运行条件时会出现"皮疹"。我搞不清楚问题出在哪里。如有帮助,不胜感激。

import pandas as pd
import matplotlib.pyplot as plot
%matplotlib inline
bar_data = {'A':4,'B':8,'C':7,'D':1,'E':3,'F':9,'G':0,'H':4,'J':2,'K':8}
bardf = pd.DataFrame(list(bar_data.items()),columns = ['x','y'])
#display(bardf)
bar_fig=bardf.plot.bar('x', 'y',figsize=(10,6))
for index,row in bardf.iterrows():
if row['y']==0:
x=row['x']
y=row['y']
print(x,y)
bar_fig.annotate(x,color='magenta', xy=(x, y), xytext=(x, 2),
bbox=dict(boxstyle='round,pad=0.3', fc='green', alpha=0.3),arrowprops=dict(arrowstyle='->',color='green'))

我不确定这是否能解决你的问题,但在你的情况下,应该使用它的位置,而不是x。

bar_fig=bardf.plot.bar('x', 'y',figsize=(10,6))
for index,row in bardf.iterrows():
if row['y']==0:
x=row['x']
y=row['y']
print(index)
bar_fig.annotate(x,color='magenta', xy=(index, y), 
xytext=(index,2),bbox=dict(boxstyle='round,pad=0.3',fc='green', alpha=0.3),arrowprops=dict(arrowstyle='->',color='green'))

最新更新