WedX - журнал о программировании и компьютерных науках

Заполнить многоугольники несколькими цветами в python matplotlib

Я использую matplotlib для построения участков многоугольника и хотел бы обозначить участки каждого многоугольника, которые должны быть заполнены определенным цветом, т.е. сделать круговую диаграмму, но в форме треугольника, квадрата или шестиугольника. Есть ли способ изменить форму круговой диаграммы или указать несколько цветов заливки для многоугольников?

Спасибо!

Обновление: вот макет того, что я имею в виду:

Круговые диаграммы различной формы

11.12.2014

  • Если бы вы могли точно набросать то, что вы ищете (даже если это хак, похожий на MS-paint), мы могли бы предложить индивидуальное решение. Как устроены ваши данные? 12.12.2014

Ответы:


1

Вы можете создать Matplotlib collection, а затем передать массив/список цветов для использования в графике.

Рассмотрим следующий пример. Сначала сделайте несколько манекенов.

import matplotlib.path as mpath
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

def get_tri(xoff=0, yoff=0, up=1):

    verts = [(0.0 + xoff, 0.0 + yoff),
             (0.5 + xoff, 1.0 * up + yoff),
             (1.0 + xoff, 0.0 + yoff),
             (0.0 + xoff, 0.0 + yoff)]

    p = mpath.Path(verts, [mpath.Path.MOVETO] + (len(verts)-1)*[mpath.Path.LINETO])

    return p

shapes = [get_tri(xoff=x, yoff=y, up=o) for x,y,o in [(0.0, 0,  1),
                                                    (1.0, 0,  1),
                                                    (0.5, 1,  1),
                                                    (0.5, 1, -1)]]

Получить цвета из палитры:

cmap = plt.cm.RdYlBu_r
colors = cmap(np.linspace(0,1, len(shapes)))

И постройте фигуры:

fig, ax = plt.subplots(subplot_kw={'aspect': 1.0})

coll = mpl.collections.PathCollection(shapes, facecolor=colors, linewidth=3)

ax.add_collection(coll)
ax.autoscale_view()

Обратите внимание: поскольку я использую Paths для своих фигур, я также использую PathCollection. Если вы используете Polygons (или что-то еще), вы также должны использовать соответствующий тип коллекции, например PolyCollection.

Таким образом, рисовать разные цвета очень просто, сложная часть, вероятно, состоит в том, чтобы получить пути / многоугольники. Если они у вас уже есть, вы можете поместить их в список для создания коллекции.

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

15.12.2014
  • Это не совсем то, что я искал, но это супер круто!! 15.12.2014
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]