python - Python 的颜色 (seaborn) : colors without adding to DataFrame

标签 python pandas colors seaborn

slov = {'People': {0: 'Ivan', 1: 'John', 2: 'Peter', 3: 'Ming'}, 'Country':{0: 'Russia', 1: 'USA', 2: 'USA', 3: 'China'},\
    'Height': {0: 181, 1: 175, 2: 174, 3: 173}}

我想看看这张照片

Colors for different countries

但是我不知道该怎么做。我的意思是,我想为俄罗斯人提供红色,为美国人提供绿色,为中国人提供黄色。

我尝试寻找解决方案:

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
sns.set(style="white")

slov = {'People': {0: 'Ivan', 1: 'John', 2: 'Peter', 3: 'Ming'}, 'Country':{0: 'Russia', 1: 'USA', 2: 'USA', 3: 'China'},\
'Height': {0: 181, 1: 175, 2: 174, 3: 173}}

obj = pd.DataFrame(slov)

palette=["g", "b", "r"]
obj['Color']='r'

row_index = obj.Country == 'Russia'
obj.loc[row_index, 'Color'] = 'r'

row_index = obj.Country == 'USA'
obj.loc[row_index, 'Color'] = 'g'

row_index = obj.Country == 'China'
obj.loc[row_index, 'Color'] = 'y'


g = sns.factorplot(x="People", y="Height",  data=obj, kind='bar', palette=obj['Color'])

plt.show()

也许我的解决方案不是很好。我向 DataFrame 添加了颜色。也许我们可以写得更好。也许我不需要向我的 DataFrame 添加颜色(这似乎不太正确。)。但是,如果不将这些颜色添加到我的 DataFrame 中,如何解决我的任务呢?

最佳答案

您可以使用map通过字典:

d = {'Russia':'r', 'USA':'g','China':'y'}
g = sns.factorplot(x="People", 
                   y="Height",  
                   data=obj, 
                   kind='bar', 
                   palette=obj['Country'].map(d))

plt.show()

graph

关于python - Python 的颜色 (seaborn) : colors without adding to DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41416351/

相关文章:

python - 为什么 Google App Engine NDB 在 ndb.Model 的 @classmethod 内部时返回 StringProperty(...) 作为属性值?

python - 如何将函数中的多个变量移至全局范围?

python - get_dummies 分割字符

python - Pandas 和 numpy 线程安全

colors - GNU 并行 - 保持输出彩色

colors - 如何更改 SBAdmn bootstrap 主题中的侧边栏导航栏颜色

python - 如何检查列是否包含 pandas 中的字符串

python - 使用 pandas 合并具有相同列名的两列

ios - 颜色导航 Controller

python - 比较两个 N 维数组