首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据ax.text上的值更改文本颜色

根据ax.text上的值更改文本颜色
EN

Stack Overflow用户
提问于 2019-02-14 22:13:04
回答 1查看 2.6K关注 0票数 2

我正在绘制一个水平条形图,打开百分比,但希望>0的值为绿色,负数为红色。

代码语言:javascript
复制
plt.figure(figsize=(10,6))

clrs = ['b' if (x > 10) else 'gray' for x in data2['BASE VOLUME %']]
ax = sns.barplot(x,y, data=data2, palette=clrs)
ax.set_xlabel('Base Volume',fontsize=15)
ax.set_ylabel('Color Group',fontsize=15)
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)

for i, v in enumerate(data2['BASE VOLUME %']):
    ax.text(0 + 0.01*max(data['BASE VOLUME']), i + len(data2)/50, str("{0:.1f}%".format(v)), color='black', fontweight='bold', fontsize=14)

for i, v in enumerate(diff['% Change from last month']):
    ax.text(1.06*max(data['BASE VOLUME']), i + len(data2)/50, str("{0:.1f}%".format(v)), color='red', fontweight='bold', 

请参阅下面的图表。21.5%、10.0%等值需要为绿色。

当我尝试colors = ['r' if (y < 0) else 'g' for y in diff['% Change from last month'].values]行并将color='red'更改为color='colors'

我得到了错误:ValueError: Invalid RGBA argument: ('g', 'r', 'g', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r')

EN

回答 1

Stack Overflow用户

发布于 2019-02-14 23:26:16

在队伍中,

代码语言:javascript
复制
for i, v in enumerate(diff['% Change from last month']):
    ax.text(1.06*max(data['BASE VOLUME']), i + len(data2)/50, str("{0:.1f}%".format(v)), color='red', fontweight='bold', fontsize=14)

可以尝试使用if-else语句,如下所示

代码语言:javascript
复制
for i, v in enumerate(diff['% Change from last month']):
    if v > 0:
        ax.text(1.06*max(data['BASE VOLUME']), i + len(data2)/50, str("{0:.1f}%".format(v)), color='g', fontweight='bold', fontsize=14)

    else:
        ax.text(1.06*max(data['BASE VOLUME']), i + len(data2)/50, str("{0:.1f}%".format(v)), color='r', fontweight='bold',
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54692433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档