Plotly - гистограмма и круговая диаграмма

В этой главе мы узнаем, как создавать гистограммы и круговые диаграммы с помощью Plotly. Давайте начнем с понимания гистограммы.

Гистограмма

Гистограмма представляет категориальные данные с прямоугольными полосами, высота или длина которых пропорциональны значениям, которые они представляют. Полосы могут отображаться вертикально или горизонтально. Это помогает сравнивать отдельные категории. Одна ось диаграммы показывает конкретные сравниваемые категории, а другая ось представляет измеренное значение.

В следующем примере показан простой bar chartо количестве студентов, обучающихся на разных курсах. Вgo.Bar() Функция возвращает полосу с координатой x, заданной как список предметов, и координатой y как количество студентов.

import plotly.graph_objs as go
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
data = [go.Bar(
   x = langs,
   y = students
)]
fig = go.Figure(data=data)
iplot(fig)

Результат будет таким, как показано ниже -

Чтобы отобразить сгруппированную линейчатую диаграмму, barmode свойство объекта Layout должно быть установлено на group. В следующем коде несколько трассировок, представляющих учащихся в каждом году, нанесены на график по предметам и показаны в виде сгруппированной гистограммы.

branches = ['CSE', 'Mech', 'Electronics']
fy = [23,17,35]
sy = [20, 23, 30]
ty = [30,20,15]
trace1 = go.Bar(
   x = branches,
   y = fy,
   name = 'FY'
)
trace2 = go.Bar(
   x = branches,
   y = sy,
   name = 'SY'
)
trace3 = go.Bar(
   x = branches,
   y = ty,
   name = 'TY'
)
data = [trace1, trace2, trace3]
layout = go.Layout(barmode = 'group')
fig = go.Figure(data = data, layout = layout)
iplot(fig)

Результат того же самого выглядит следующим образом -

В barmodeСвойство определяет, как столбцы с одной и той же координатой местоположения отображаются на графике. Определенные значения: «набор» (столбцы наложены друг на друга), «относительные» (столбцы накладываются друг на друга, с отрицательными значениями под осью, положительными значениями вверху), «group"(столбцы расположены рядом друг с другом).

Изменив свойство barmode на 'stack'построенный график выглядит следующим образом -

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

Круговая диаграмма отображает только одну серию данных. Pie Charts показать размер предметов (называемых wedge) в одном ряду данных, пропорционально сумме элементов. Точки данных показаны в процентах от всей круговой диаграммы.

В pie() функционировать в graph_objs модуль - go.Pie(), возвращает след пирога. Два обязательных аргумента:labels и values. Давайте построим простую круговую диаграмму языковых курсов в зависимости от количества студентов, как в приведенном ниже примере.

import plotly
plotly.tools.set_credentials_file(
   username = 'lathkar', api_key = 'U7vgRe1hqmRp4ZNf4PTN'
)
from plotly.offline import iplot, init_notebook_mode
init_notebook_mode(connected = True)
import plotly.graph_objs as go
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
trace = go.Pie(labels = langs, values = students)
data = [trace]
fig = go.Figure(data = data)
iplot(fig)

Следующий вывод отображается в записной книжке Jupyter -

Donut chartпредставляет собой круговую диаграмму с круглым отверстием в центре, что делает ее похожей на бублик. В следующем примере две кольцевые диаграммы отображаются в виде сетки 1X2. В то время как 'label'макет одинаков для обеих круговых диаграмм, назначение строки и столбца каждого подзаголовка определяется свойством домена.

Для этого мы используем данные о партийных местах и ​​доле голосов на парламентских выборах 2019 года. Введите следующий код в ячейку записной книжки Jupyter -

parties = ['BJP', 'CONGRESS', 'DMK', 'TMC', 'YSRC', 'SS', 'JDU','BJD', 'BSP','OTH']
seats = [303,52,23,22,22,18,16,12,10, 65]
percent = [37.36, 19.49, 2.26, 4.07, 2.53, 2.10, 1.46, 1.66, 3.63, 25.44]
import plotly.graph_objs as go
data1 = {
   "values": seats,
   "labels": parties,
   "domain": {"column": 0},
   "name": "seats",
   "hoverinfo":"label+percent+name",
   "hole": .4,
   "type": "pie"
}
data2 = {
   "values": percent,
   "labels": parties,
   "domain": {"column": 1},
   "name": "vote share",
   "hoverinfo":"label+percent+name",
   "hole": .4,
   "type": "pie"
}
data = [data1,data2]
layout = go.Layout(
   {
      "title":"Parliamentary Election 2019",
      "grid": {"rows": 1, "columns": 2},
      "annotations": [
         {
            "font": {
               "size": 20
            },
            "showarrow": False,
            "text": "seats",
            "x": 0.20,
            "y": 0.5
         },
         {
            "font": {
               "size": 20
            },
            "showarrow": False,
            "text": "votes",
            "x": 0.8,
            "y": 0.5
         }
      ]
   }
)
fig = go.Figure(data = data, layout = layout)
iplot(fig)

Результат этого же приведен ниже -