python-3.x - 在 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')
我的问题是,我想添加分区详细信息:
解决方案
这个问题的答案可以分为两部分:
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)
推荐阅读
- azure-devops - 我如何知道每个 Azure AD 应用注册的用途?
- java - 将单个流拆分为两个列表
- visual-studio-extensions - 可以通过扩展以编程方式重命名“链接”文件吗
- amazon-web-services - 在 AWS Lambdas 中调用 API 是一种好习惯吗?
- javascript - 求矩形面积和周长的独立函数第二部分
- typescript - Typescript 中对象文字的更严格返回类型
- c# - Discord.NET '对象引用未设置为对象的实例。C#
- swift - Swift - PKPushRegistry / VOIP 令牌不改变
- sql - 递归加入最近的祖先/父母以在同一个表中记录?
- google-sheets - Google Sheet:如何使用 arrayformula 将数据从一张表复制到另一张表?