Python 基于轴字符串值的彩色matplotlib条形图

Python 基于轴字符串值的彩色matplotlib条形图,python,colors,bar-chart,Python,Colors,Bar Chart,我有一个水平条形图,希望根据字符串值突出显示某些条形图(具有唯一的颜色)。我尝试了“axhspan”函数或使用掩码,但它们都不能很好地处理字符串标记。我知道对于记号是数字(int,float)而不是字符串的情况也有类似的问题 在我的例子中,我有50个国家的数据,我想突出一些不同颜色的国家组。例如:美国、加拿大和黄色;法国、英国和蓝色;日本、香港和橙色等 这是我的代码的简化版本,有人能告诉我如何为一个子组(即“us”和“canada”)设置不同的颜色吗。谢谢 您可以为每个国家/地区创建颜色列表。对

我有一个水平条形图,希望根据字符串值突出显示某些条形图(具有唯一的颜色)。我尝试了“axhspan”函数或使用掩码,但它们都不能很好地处理字符串标记。我知道对于记号是数字(int,float)而不是字符串的情况也有类似的问题

在我的例子中,我有50个国家的数据,我想突出一些不同颜色的国家组。例如:美国、加拿大和黄色;法国、英国和蓝色;日本、香港和橙色等

这是我的代码的简化版本,有人能告诉我如何为一个子组(即“us”和“canada”)设置不同的颜色吗。谢谢


您可以为每个国家/地区创建颜色列表。对于您不想标记的国家/地区,您将使用默认颜色(即“g”)。通过索引国家名称,可以找到要突出显示的正确国家。像这样:

#defalut color
color = [ 'g' for i in country_names]
#highlight usa:
color[ country_names.index("usa") ] = "b"
#highlight canada:
color[ country_names.index("canada") ] = "r"

ax.barh(y_pos, country_rank, color=color, xerr=error, align='center', ecolor='black')
如果您需要在选定国家/地区列表中为某些国家/地区设置相同的颜色,而此列表并没有那么大。。。。(世界上只有196个国家),你可以通过一个简单的循环来完成

for name in selected_coutries:
    color[ country_names.index(name) ] = "y"

嗨,如果我想把几个国家的颜色都设置在一起呢?假设将红色设置为十个不同的国家,有没有一种方法可以用一两行代码系统地完成这项工作,而不是重复相同的代码十次?泰。
for name in selected_coutries:
    color[ country_names.index(name) ] = "y"