首页 > 解决方案 > 在 matplotlib 上添加标签和垂直线(绘图区域外)

问题描述

我有一个类似于以下内容的熊猫数据框:

df = pd.DataFrame([['1/1/2020',0.1,0.3,'cat1','csv'],\
                  ['1/1/2020',0.4,0.7,'cat1','excel'],\
                  ['1/1/2020',1.7,2.3,'cat2','csv'],\
                  ['2/1/2020',0,0.3,'cat2','csv'],\
                  ['2/1/2020',0.4,0.5,'cat2','csv'],\
                  ['2/1/2020',0.5,0.7,'cat1','csv'],\
                  ['2/1/2020',1.1,1.3,'cat1','excel']],\
                     columns = ['date','start','end','cat','source'])

df 的每一行都包含要着色的值范围和颜色组(猫)。我可以使用以下代码绘制如下图: plt.figure(figsize=(10,3))

for i,r in df.iterrows():
    plt.barh(r['date'], width=r['end']-r['start'],
             left=r['start'], color='y' if r['cat']=='cat1' else 'g')

在此处输入图像描述

我的问题是,我想添加分区详细信息:

在此处输入图像描述

标签: python-3.xmatplotlib

解决方案


这个问题的答案可以分为两部分:

1. 在 xy 绘图之外绘制文本框

props = dict(boxstyle='round', facecolor='wheat', alpha=1)
plt.text(0, .9, "textstr", fontsize=14, transform=plt.gcf().transFigure,verticalalignment='top', bbox=props)

可以根据您的目的手动调整 0 和 0.9 的值。

2.在xy图上画一条垂直线

plt.axvline(x=5,color='r', linewidth = 5)

推荐阅读