изменять цвет каждого бара на барграфе с использованием определенного значения

У меня есть диаграмма, как показано ниже: http://matplotlib.org/examples/api/barchart_demo.html

В этом случае давайте предположим, что каждая из групп G1-G5 представляет собой средний балл, который мужчины в каждой группе получили на одном экзамене, а женщины в каждой группе попали на один и тот же экзамен.

  • Есть ли функция для создания матриц рассеяния в matplotlib?
  • Код Python. Это оператор запятой?
  • Matplotlib исчерпывает память при построении графика в цикле
  • NumPy ImportError в python - Ошибка загрузки Dll
  • Развертывание matplotlib на heroku не удалось. Как это сделать правильно?
  • Стилирование панд-групп
  • Теперь предположим, что у меня есть другая функция, связанная с каждой группой (avg. Likability (float между 1-5)).

     Ex: Avg Likability of men in G1 - 1.33 Avg Likability of women in G1 - 4.6 Avg Likability of men in G2- 5.0 .... etc... 

    Предположим, что 1 – не симпатичный, а 5 – очень симпатичный

    Я хочу знать, как я могу включить эту особенность симпатии в каждый бар, изменив оттенок примера цвета: поскольку люди группы 1 в приведенном выше примере имеют 1.33, их график будет затенен более светлым оттенком красного цвета, чем люди из G2, так как люди из G2 имеют 5,0 симпатии, их бар будет самым темным оттенком красного на графике, и то же самое для женщин.

    Надеюсь, я ясно дал понять. Я был бы очень признателен, если бы кто-нибудь мог указать мне на ресурс в matplotlib, который мог бы достичь этого, поскольку я очень новичок в этом пакете.

    Заранее спасибо.

  • Как запустить «ps cax | grep что-то "в Python?
  • Закладка вкладки python в окнах
  • Параметры командной строки для скриптов IPython *?
  • Unicodedecodeerror с сервером
  • Xpath как запрос для вложенных словарей python
  • Разбор ответов JSON
  • 2 Solutions collect form web for “изменять цвет каждого бара на барграфе с использованием определенного значения”

    bar принимает список цветов в качестве аргумента (docs) . Просто передайте цвета, которые вы хотите.

     import matplotlib.pyplot as plt import matplotlib.cm as cm from matplotlib.colors import Normalize from numpy.random import rand fig, ax = plt.subplots(1, 1) # get a color map my_cmap = cm.get_cmap('jet') # get normalize function (takes data in range [vmin, vmax] -> [0, 1]) my_norm = Normalize(vmin=0, vmax=5) # some boring fake data my_data = 5*rand(5) ax.bar(range(5), rand(5), color=my_cmap(my_norm(my_data))) plt.show() 

    введите описание изображения здесь

     import matplotlib.pyplot as plt import matplotlib as mp import numpy as np xs = "ABCDEFGHI" ys = [5, 6, 7, 8, 9, 10, 11, 12, 13] #Colorize the graph based on likeability: likeability_scores = np.array([ 5, 4.5, 3.5, 2.5, 1.5, .5, 2, 3, 4, ]) data_normalizer = mp.colors.Normalize() color_map = mp.colors.LinearSegmentedColormap( "my_map", { "red": [(0, 1.0, 1.0), (1.0, .5, .5)], "green": [(0, 0, 0), (1.0, 0, 0)], "blue": [(0, 0, 0), (1.0, 0, 0)] } ) #Map xs to numbers: N = len(xs) x_nums = np.arange(1, N+1) #Plot a bar graph: plt.bar( x_nums, ys, align="center", color=color_map(data_normalizer(likeability_scores)) ) #Change x numbers back to strings: plt.xticks(x_nums, xs) plt.show() --output:-- 

    введите описание изображения здесь

    значения r, g, b начинаются с 0-1. Вот красное отображение:

      "red": [(0, 1.0, 1.0), (1.0, .5, .5)], 

    Первый элемент в каждом кортеже задает нормированную оценку соответствия. Второй элемент в каждом кортеже задает оттенок красного (0-1). Третий элемент в каждом кортеже для более сложных вещей, поэтому здесь он всегда совпадает с вторым элементом.

    Красное сопоставление указывает, что нормализованные оценки соответствия между 0-1.0 (первые элементы каждого кортежа) будут отображаться в диапазоне от 100% красного до 50% красного (второй элемент в каждом кортеже). Нормализованный показатель сходства 0 будет отображаться на 100% красным, а нормализованный показатель сходства 1,0 будет отображаться на 50% красным. Установка темного красного на 50% держит красный цвет настолько темным, что он выглядит коричневым или черным.

    Вы можете указать столько кортежей, сколько хотите – вам просто нужно убедиться, что вы назначили красные значения для всего диапазона (0-1) нормализованных оценок соответствия, например:

      "red": [(0, .5, .5), (.8, .6, .6), (1.0, .9, .9)], 

    Вы не можете этого сделать:

      "red": [(0, .5, .5), (.8, 1.0, 1.0)], 
    Python - лучший язык программирования в мире.