1周大的新手在這里。我已經成功創建了一個圖表,在 x 軸上顯示狀態,在 y 軸上顯示速率。我正在努力注釋最大值,例如 Maine @ 1.10%。下面的作業正常,但它是手動的,因為我正在插入坐標:
ax.annotate('Biggest Concern',
xy=(11.8, 1), xycoords='data',
xytext=(-15, 25), textcoords='offset points',
arrowprops=dict(facecolor='black', shrink=0.05),
horizontalalignment='right', verticalalignment='bottom')
當我嘗試這種方法時:
x=np.array(df_Readmit['State'])
y=np.array(df_Readmit['DeltaReadmitRate'])
ax.annotate('local max', xy=(xmax, ymax), xytext=(xmax, ymax 5),
arrowprops=dict(facecolor='black', shrink=0.05),)
它出錯了:
只能將 str(不是“int”)連接到 str
我嘗試將 str() 包裹在 ymax 5 周圍,我收到了相同的訊息。下面是幾乎完成的產品,只是缺少注釋。我認為需要用索引做一些事情來使狀態成為整數。

uj5u.com熱心網友回復:
如果 ymax 的值為 5,則注釋可能在圖框之外。在分類變數的情況下,我們可能會得到最大值的索引,所以我們使用它。因此,通過索引 y 值的最大值和 x 值的最大值,可以進行注釋。應調整偏移值以匹配 y 軸值。
由于沒有提供資料,我正在創建示例資料。
df.head()
short_name state Delta
0 AK Alaska -0.257858
1 AL Alabama 0.918444
2 AR Arkansas -1.101622
3 AZ Arizona 1.957581
4 CA California 1.143238
fig, ax = plt.subplots(figsize=(16,6))
ax.bar(df['state'], height=df['Delta'], color=['b' if x > 0 else 'r' for x in df['Delta']])
ax.grid()
ax.set_xlim([df.index[0]-0.5, df.index[-1] 0.5])
ax.set_ylim([-2.2,2.2])
xmax = df['Delta'].argmax()
ymax = df['Delta'].max()
ax.annotate('local max', xy=(xmax, ymax), xytext=(xmax, ymax 0.2),
arrowprops=dict(facecolor='black', shrink=0.05),)
ax.tick_params(axis='x', labelrotation=90)
for s in ['top','bottom','right','left']:
ax.spines[s].set_visible(False)
plt.show()

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/512073.html
