Изменить цвета по умолчанию для мозаичного графика - PullRequest
0 голосов
/ 13 июня 2019

Я хочу изменить цвет этого мозаичного графика, чтобы он печатался черным по белому, но не могу найти способ изменить этот параметр

the mosaic plot

from statsmodels.graphics.mosaicplot import mosaic
import matplotlib.pyplot as plt
import pandas

x = ['yes', 'yes', 'yes', 'yes', 'yes', 'yes', 'yes']
y = ['yes', 'yes', 'yes', 'yes', 'no', 'no', 'no']
data = pandas.DataFrame({'x': x, 'y': y})
mosaic(data, ['x', 'y'])

plt.savefig("mosaicplot.pdf", figsize=[10,5])
plt.show()

Вот что у меня есть на самом деле: я видел, что могу изменить цвет с помощью мозаики (свойства) по этой ссылке: http://www.statsmodels.org/stable/generated/statsmodels.graphics.mosaicplot.mosaic.html, но я могу дать только 2 разных цвета, и мне нужен другой цвет длякаждый сюжет, вот так: enter image description here

1 Ответ

1 голос
/ 13 июня 2019

В документации упоминается аргумент properties=:

Свойства функции (ключ) -> DICT, необязательно

Функция, которая для каждой плитки в мозаике берет ключ плитки и возвращает словарь свойств сгенерированного Прямоугольник, как цвет, люк или подобное. Набор свойств по умолчанию будет будут предоставлены для ключей, цвет которых не был определен, и будут используйте изменение цвета, чтобы помочь визуально разделить различные категории. Он должен вернуть None, чтобы указать, что должен использовать значение по умолчанию свойство для плитки. Словарь свойств для каждого ключа может будет передано, и оно будет внутренне преобразовано в правильную функцию

Следовательно, вы можете передать либо функцию (см. Пример в ссылке выше), либо, проще, словарь, в properties=, чтобы изменить внешний вид прямоугольников:

x = ['yes', 'yes', 'yes', 'yes', 'yes', 'yes', 'yes']
y = ['yes', 'yes', 'yes', 'yes', 'no', 'no', 'no']
data = pandas.DataFrame({'x': x, 'y': y})

props = {}
props[('yes', 'yes')] = {'color': 'xkcd:orange'}
props[('yes','no')] = {'facecolor': 'xkcd:pale blue',
                       'edgecolor':'xkcd:light grey',
                       'hatch':'o'}
data = pandas.DataFrame({'x': x, 'y': y})
mosaic(data, ['x', 'y'], properties=props)

enter image description here

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...