Круговая диаграмма matplotlib python

matplotlib.pyplot.pie#

matplotlib.pyplot. pie ( x , explode = None , labels = None , colors = None , autopct = None , pctdistance = 0.6 , shadow = False , labeldistance = 1.1 , startangle = 0 , radius = 1 , counterclock = True , wedgeprops = None , textprops = None , center = (0, 0) , frame = False , rotatelabels = False , * , normalize = True , hatch = None , data = None ) [source] #

Make a pie chart of array x. The fractional area of each wedge is given by x/sum(x) .

The wedges are plotted counterclockwise, by default starting from the x-axis.

Parameters : x 1D array-like

explode array-like, default: None

If not None, is a len(x) array which specifies the fraction of the radius with which to offset each wedge.

labels list, default: None

A sequence of strings providing the labels for each wedge

colors array-like, default: None

A sequence of colors through which the pie chart will cycle. If None, will use the colors in the currently active cycle.

hatch str or list, default: None

Hatching pattern applied to all pie wedges or sequence of patterns through which the chart will cycle. For a list of valid patterns, see Hatch style reference .

If not None, autopct is a string or function used to label the wedges with their numeric value. The label will be placed inside the wedge. If autopct is a format string, the label will be fmt % pct . If autopct is a function, then it will be called.

pctdistance float, default: 0.6

The relative distance along the radius at which the text generated by autopct is drawn. To draw the text outside the pie, set pctdistance > 1. This parameter is ignored if autopct is None .

labeldistance float or None, default: 1.1

The relative distance along the radius at which the labels are drawn. To draw the labels inside the pie, set labeldistance < 1. If set to None , labels are not drawn but are still stored for use in legend .

shadow bool, default: False

Draw a shadow beneath the pie.

startangle float, default: 0 degrees

The angle by which the start of the pie is rotated, counterclockwise from the x-axis.

radius float, default: 1

counterclock bool, default: True

Specify fractions direction, clockwise or counterclockwise.

wedgeprops dict, default: None

Dict of arguments passed to each patches.Wedge of the pie. For example, wedgeprops = sets the width of the wedge border lines equal to 3. By default, clip_on=False . When there is a conflict between these properties and other keywords, properties passed to wedgeprops take precedence.

textprops dict, default: None

Dict of arguments to pass to the text objects.

center (float, float), default: (0, 0)

The coordinates of the center of the chart.

frame bool, default: False

Plot Axes frame with the chart if true.

rotatelabels bool, default: False

Rotate each label to the angle of the corresponding slice if true.

normalize bool, default: True

When True, always make a full pie by normalizing x so that sum(x) == 1 . False makes a partial pie if sum(x) 1 .

data indexable object, optional

If given, the following parameters also accept a string s , which is interpreted as data[s] (unless this raises an exception):

Returns : patches list

texts list

A list of the label Text instances.

autotexts list

A list of Text instances for the numeric labels. This will only be returned if the parameter autopct is not None.

The pie chart will probably look best if the figure and Axes are square, or the Axes aspect is equal. This method sets the aspect ratio of the axis to «equal». The Axes aspect ratio can be controlled with Axes.set_aspect .

Источник

Matplotlib. Урок 4.3. Визуализация данных. Столбчатые и круговые диаграммы

Follow us on Google Plus Follow us on rss

В этому уроке изучим особенности работы со столбчатой и круговой диаграммами.

Столбчатые диаграммы

Для визуализации категориальных данных хорошо подходят столбчатые диаграммы. Для их построения используются функции:

bar() – для построения вертикальной диаграммы

barh() – для построения горизонтальной диаграммы.

Построим простую диаграмму:

np.random.seed(123) groups = [f"P" for i in range(7)] counts = np.random.randint(3, 10, len(groups)) plt.bar(groups, counts)

Если заменим bar() на barh() получим горизонтальную диаграмму:

Рассмотрим более подробно параметры функции bar() :

  • x : набор величин
    • x координаты столбцов
    • Высоты столбцов
    • Ширина столбцов
    • y координата базы
    • Выравнивание по координате x .
    • color : скалярная величина, массив или optional
      • Цвет столбцов диаграммы
      • Цвет границы столбцов
      • Ширина границы
      • Метки для столбца
      • Величина ошибки для графика. Выставленное значение удаляется/прибавляется к верхней (правой – для горизонтального графика) границе. Может принимать следующие значения:
        • скаляр: симметрично +/- для всех баров
        • shape(N,) : симметрично +/- для каждого бара
        • shape(2,N) : выборочного – и + для каждого бара. Первая строка содержит нижние значения ошибок, вторая строка – верхние.
        • None : не отображать значения ошибок. Это значение используется по умолчанию.
        • Цвет линии ошибки.
        • Включение логарифмического масштаба для оси y
        • Ориентация: вертикальная или горизонтальная.

        Построим более сложный пример, демонстрирующий работу с параметрами:

        import matplotlib.colors as mcolors bc = mcolors.BASE_COLORS np.random.seed(123) groups = [f"P" for i in range(7)] counts = np.random.randint(0, len(bc), len(groups)) width = counts*0.1 colors = [["r", "b", "g"][int(np.random.randint(0, 3, 1))] for _ in counts] plt.bar(groups, counts, width=width, alpha=0.6, bottom=2, color=colors, edgecolor="k", linewidth=2)

        Групповые столбчатые диаграммы

        Используя определенным образом подготовленные данные можно строить групповые диаграммы:

        cat_par = [f"P" for i in range(5)] g1 = [10, 21, 34, 12, 27] g2 = [17, 15, 25, 21, 26] width = 0.3 x = np.arange(len(cat_par)) fig, ax = plt.subplots() rects1 = ax.bar(x - width/2, g1, width, label='g1') rects2 = ax.bar(x + width/2, g2, width, label='g2') ax.set_title('Пример групповой диаграммы') ax.set_xticks(x) ax.set_xticklabels(cat_par) ax.legend()

        Диаграмма с errorbar элементом

        Errorbar элемент позволяет задать величину ошибки для каждого элемента графика. Для этого используются параметры xerr , yerr и ecolor (для задания цвета):

        np.random.seed(123) rnd = np.random.randint cat_par = [f"P" for i in range(5)] g1 = [10, 21, 34, 12, 27] error = np.array([[rnd(2,7),rnd(2,7)] for _ in range(len(cat_par))]).T fig, axs = plt.subplots(1, 2, figsize=(10, 5)) axs[0].bar(cat_par, g1, yerr=5, ecolor="r", alpha=0.5, edgecolor="b", linewidth=2) axs[1].bar(cat_par, g1, yerr=error, ecolor="r", alpha=0.5, edgecolor="b", linewidth=2)

        Круговые диаграммы

        Классическая круговая диаграмма

        Круговые диаграммы – это наглядный способ показать доли компонент в наборе. Они идеально подходят для отчетов, презентаций и т.п. Для построения круговых диаграмм в Matplotlib используется функция pie() .

        Пример построения диаграммы:

        vals = [24, 17, 53, 21, 35] labels = ["Ford", "Toyota", "BMV", "AUDI", "Jaguar"] fig, ax = plt.subplots() ax.pie(vals, labels=labels) ax.axis("equal")

        Рассмотрим параметры функции pie() :

        • x: массив
          • Массив с размерами долей.
          • Если параметр не равен None , то часть долей, который перечислены в передаваемом значении будут вынесены из диаграммы на заданное расстояние, пример диаграммы:

          • labels: list, optional , значение по умолчанию: None
            • Текстовые метки долей.
            • Цвета долей.
            • Формат текстовой метки внутри доли, текст – это численное значение показателя, связанного с конкретной долей.
            • Расстояние между центром каждой доли и началом текстовой метки, которая определяется параметром autopct .
            • Отображение тени для диаграммы.
            • Расстояние, на котором будут отображены текстовые метки долей. Если параметр равен None , то метки не будет отображены.
            • Задает угол, на который нужно повернуть диаграмму против часовой стрелке относительно оси x .
            • Величина радиуса диаграммы.
            • Определяет направление вращения – по часовой или против часовой стрелки.
            • Словарь параметров, определяющих внешний вид долей.
            • Словарь параметров определяющих внешний вид текстовых меток.
            • Центр диаграммы.
            • Если параметр равен True , то вокруг диаграммы будет отображена рамка.
            • Если параметр равен True , то текстовые метки будут повернуты на угол.

            Создадим пример, в котором продемонстрируем работу с параметрами функции pie() :

            vals = [24, 17, 53, 21, 35] labels = ["Ford", "Toyota", "BMV", "AUDI", "Jaguar"] explode = (0.1, 0, 0.15, 0, 0) fig, ax = plt.subplots() ax.pie(vals, labels=labels, autopct='%1.1f%%', shadow=True, explode=explode, wedgeprops=, rotatelabels=True) ax.axis("equal")

            Вложенные круговые диаграммы

            Рассмотрим пример построения вложенной круговой диаграммы. Такая диаграмма состоит из двух компонент: внутренняя ее часть является детальным представлением информации, а внешняя – суммарную по заданным областям. Каждая область представляет собой список численных значений, вместе они образуют общий набор данных. Рассмотрим на примере:

            fig, ax = plt.subplots() offset=0.4 data = np.array([[5, 10, 7], [8, 15, 5], [11, 9, 7]]) cmap = plt.get_cmap("tab20b") b_colors = cmap(np.array([0, 8, 12])) sm_colors = cmap(np.array([1, 2, 3, 9, 10, 11, 13, 14, 15])) ax.pie(data.sum(axis=1), radius=1, colors=b_colors, wedgeprops=dict(width=offset, edgecolor='w')) ax.pie(data.flatten(), radius=1-offset, colors=sm_colors, wedgeprops=dict(width=offset, edgecolor='w'))

            Круговая диаграмма в виде бублика

            Построим круговую диаграмму в виде бублика (с отверстием посередине). Это можно сделать через параметр wedgeprops , который отвечает за внешний вид долей:

            vals = [24, 17, 53, 21, 35] labels = ["Ford", "Toyota", "BMV", "AUDI", "Jaguar"] fig, ax = plt.subplots() ax.pie(vals, labels=labels, wedgeprops=dict(width=0.5))

            P.S.

            Вводные уроки по “Линейной алгебре на Python” вы можете найти соответствующей странице нашего сайта . Все уроки по этой теме собраны в книге “Линейная алгебра на Python”.

            Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. Для начала вы можете познакомиться с вводными уроками. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.

            Источник

            Круговая диаграмма в Matplotlib

            Посмотрите мой отчёт по питанию за предыдущий месяц. Видите там круговую диаграмму? Сейчас мы сделаем точно такую же с помощью Python и Matplotlib.

            Овощи, фрукты, ягоды 21,79
            Молочные 20,18
            Мясные 18,82
            Орешки 13,64
            Рыба и морепродукты 10,30
            Хлебобулочные 5,18
            Чай, кофе, какао-порошки 4,69
            Крупы 3,06
            Приправы 1,98
            Напитки 0,35

            Введём эти данные в Python (в качестве IDE я использовал Spyder 3):

            Теперь построим круговую диаграмму:

            Функция subplots ( ) возвращает объект Figure и объект Axes . Объект Figure — это базовый объект для всех графиков. Нам он пока не особо нужен. Объект Axes — это объект, который содержит все прямоугольники, линии и т. д. С помощью Axes мы и будем рисовать круговую диаграмму. Вызов ax1 . pie — это и есть построение нашей круговой диаграммы.

            Результат получился таким:

            Matplotlib pie

            Как видим, результат получился не очень. Вместо круга получился эллипс. Это можно легко исправить добавив ax1 . axis ( ‘equal’ ) , который укажет, что соотношение длины и ширины диаграммы должны быть одинаковы:

            Источник

            Читайте также:  One line comment in java
Оцените статью