如何在Matplotlib中将数字映射为颜色的颜色

时间:2019-04-10 09:34:52

标签: python pandas matplotlib colors

我想用matplotlib可视化来自熊猫数据框的结果。为了进行可视化,我考虑了每个条带颜色不同的条形图。

因此,我将“百分比”绘制为y轴,将索引绘制为x轴(请参见下面的代码)。 现在,我希望每个条形的颜色都由绿色变为黄色,具体取决于“计数器”。 绿色->最高编号 黄色->最低编号(或任何其他颜色)

我想出了'value_to_color'函数。它仅支持红色,绿色或蓝色(和透明度)。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

def value_to_colour(values):
    values = values / values.max()
    colors = list()
    for co in values:
        green = round(co, 3)
        red = (1 - green)
        blue = 0
        colors.append((red, green, blue, 1))
    return colors

index = ['(-5.5, -5.0]', '(-5.0, -4.5]', '(-4.5, -4.0]', '(-4.0, -3.5]','(-3.5, -3.0]', '(-3.0, -2.5]', '(-2.5, -2.0]', '(-2.0, -1.5]','(-1.5, -1.0]', '(-1.0, -0.5]', '(-0.5, 0.0]', '(0.0, 0.5]','(0.5, 1.0]', '(1.0, 1.5]', '(1.5, 2.0]', '(2.0, 2.5]', '(2.5, 3.0]','(3.0, 3.5]', '(3.5, 4.0]', '(4.0, 4.5]', '(4.5, 5.0]']
percent = [1.41, 1.38, 1.37, 1.36, 1.34, 1.33, 1.32, 1.31, 1.29, 1.28, 1.26, 1.26, 1.26, 1.27, 1.27, 1.27, 1.27, 1.27, 1.25, 1.25, 1.26]
counter = [14.5, 33.5, 54.3, 100.5, 169.8, 214.5, 282.5, 347.6, 414.3, 470.8, 532.0, 469.8, 424.3, 364.3, 281.2, 231.3, 164.0, 108.7, 71.7, 39.4, 21.8]
data = { 'counter': counter, 'percent': percent}
df = pd.DataFrame(data, index)
df.index.name = 'categ_index'

color = value_to_colour(df['counter'])

y_pos = np.arange(len(df.index))
plt.bar(y_pos, df['percent'], color=color)
plt.xticks(y_pos, df.index)
plt.xticks(y_pos, rotation=90)
plt.xlabel(df.index.name)
plt.ylabel(df.keys()[1])
plt.tight_layout()
plt.show()

我希望这件事会有所帮助。但是我找不到合适的。

0 个答案:

没有答案