繁体   English   中英

为多线图上的每一列注释数据点

[英]Annotate data points for each column on multi-line plot

我有一个多列的数据框(列代表月份),每一行是一个组,例如

    OCT20  NOV20  DEC20  JAN21
A   20     24     19     18
B   45     29     33     46
C   19     11     13     11

(这只是获得可重现解决方案的虚拟数据)。

我正在绘制此数据框的线图,列作为 x-ticks,索引中的每一行作为图中的一条线,每行每个月的值是 y 值。

下面是我用于绘图的代码,它工作正常。 但是,我想用数据帧中的每个数据点的值来注释每个数据点,但是通过下面的代码,我将所有数据点都放在一个地方。

%matplotlib inline

labels = ['OCT20', 'NOV20', 'DEC20', 'JAN21', 'FEB21', 'MAR21']

ax = df.T.plot(grid = True, figsize=(20,15), marker='o')

for col in df.columns:
    for id, val in enumerate(df[col]):
        ax.text(id, val, str(val))

x = [0,1,2,3,4,5]
plt.xticks(x, labels, rotation=45)
    
plt.show()

输出是这样的: 在此处输入图片说明

但我希望每个数据点都对应于图中的正确标记。

有谁知道如何解决这个问题?

你离得那么近! 您已经转置了 DataFrame,但随后尝试通过未转置的 DataFrame df应用文本:

plot_df = df.T  # Save the Transposition
ax = plot_df.plot(grid=True, figsize=(20, 15), marker='o')

for col in plot_df.columns:  # Use the Transposition
    for idx, val in enumerate(plot_df[col]):
        ax.text(idx, val, str(val))

x = [0, 1, 2, 3]
labels = ['OCT20', 'NOV20', 'DEC20', 'JAN21']
plt.xticks(x, labels, rotation=45)

阴谋


使用的数据帧:

df = pd.DataFrame({
    'OCT20': {'A': 20, 'B': 45, 'C': 19},
    'NOV20': {'A': 24, 'B': 29, 'C': 11},
    'DEC20': {'A': 19, 'B': 33, 'C': 13},
    'JAN21': {'A': 18, 'B': 46, 'C': 11}
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM