Arhn - архитектура программирования

Настройка подграфиков круговых диаграмм с соответствующим размером и интервалом

Я изо всех сил пытаюсь настроить подграфики круговой диаграммы с подходящим размером и интервалом. Если размер круговой диаграммы слишком мал, данные не видны, если расстояние между подграфиками не подходит, диаграмма будет переполнена. Таким образом, расположение подзаголовков представляет собой следующие 3 строки; 2 колонки. Пожалуйста, смотрите ниже фрагмент из набора данных:

violent_main=pd.DataFrame({'Counts': crimes[crimes['Class Main Cathegory'].notnull()==True].groupby(['Police District Number'])['Class Main Cathegory'].value_counts()}).reset_index()
violent_main

Также прикреплен экран печати набора данных: фрагмент набора данных

Я использую следующий код для построения графика:

#PD_1D
label_PD_1D=violent_main[violent_main['Police District Number']=='1D']['Class Main Cathegory']
values_PD_1D=violent_main[violent_main['Police District Number']=='1D']['Counts']

#PD_2D
label_PD_2D=violent_main[violent_main['Police District Number']=='2D']['Class Main Cathegory']
values_PD_2D=violent_main[violent_main['Police District Number']=='2D']['Counts']

#PD_3D
label_PD_3D=violent_main[violent_main['Police District Number']=='3D']['Class Main Cathegory']
values_PD_3D=violent_main[violent_main['Police District Number']=='3D']['Counts']

#PD_4D
label_PD_4D=violent_main[violent_main['Police District Number']=='4D']['Class Main Cathegory']
values_PD_4D=violent_main[violent_main['Police District Number']=='4D']['Counts']

fig = {
  "data": [
    {
      "values": values_PD_1D,
      "labels": label_PD_1D,
      "domain": {'x': [0.0, 0.35], 'y': [2.22, 2.53]},
      "name": "PD_1D",
      "hoverinfo":"label+percent+name",
      "hole": .4,  
      "type": "pie"
    },     
    {
      "values": values_PD_2D,
      "labels": label_PD_2D,
      "text":"CO2",
      "textposition":"inside",
      "domain":{'x': [0.50, 0.85], 'y': [2.22, 2.53]},
      "name": "PD_2D",
      "hoverinfo":"label+percent+name",
      "hole": .4,  
      "type": "pie"
    },
     {
      "values": values_PD_3D,
      "labels": label_PD_3D,
      "text":"CO2",
      "textposition":"inside",
      'domain': {'x': [0.0, 0.35], 'y': [.9, 1.13]},
      "name": "CO2 Emissions",
      "hoverinfo":"label+percent+name",
      "hole": .4,   
      "type": "pie"
    }  
  ],
  "layout": {
        "title":"Violent Crimes by main cathegory",
        "annotations": [
            {
                "font": {
                    "size": 20
                },
                "showarrow": False,
                "text": "PD_1D",
                "x": 0.12,
                "y": 0.5
            },
            {
                "font": {
                    "size": 20
                },
                "showarrow": False,
                "text": "PD_2D",
                "x": 0.73,
                "y": 0.5
                },
            {
                "font": {
                    "size": 20
                },
                "showarrow": False,
                "text": "PD_3D",
                "x": 0.20,
                "y": 0.25
                }
            ]
        }
    }
iplot(fig, filename='donut')

В этом коде я пытаюсь манипулировать макетом, используя «домен»: {x: [], y: []) Однако я не могу получить желаемый макет. Так, например, участок № 3 меньше и выше участка 1 и участка 2. Я хотел бы, чтобы этот участок был того же размера, что и другие участки, но ниже. См. ниже график: сюжет

Я надеюсь, что смогу понять логику, чтобы построить круговые диаграммы: 3 строки: 2 столбца. пожалуйста, порекомендуйте


  • Ответ решил вашу проблему? 31.07.2017
  • Привет, Максимилиан, это не то, что я искал, но мне удалось решить проблему. Это может быть закрыто 31.07.2017

Ответы:


1

Взгляните на этот отличный ответ: Как строить круговые диаграммы в виде подграфиков произвольного размера с помощью Plotly в Python

Чтобы получить графики одинакового размера, их domain интервалы должны быть одинаковыми. Домены начинаются снизу (например, 0 внизу, 1 вверху).

введите здесь описание изображения values_PD_1D = [i для i в диапазоне (30, 100, 10)] values_PD_2D = values_PD_1D[::-1] values_PD_3D = values_PD_1D[::-2]

label_PD_1D = ['Javascript', 'Python', 'R', 'Java', 'C#', 'C++', 'Perl']
label_PD_2D = label_PD_1D
label_PD_3D = label_PD_1D[::-2]

fig = {
  "data": [
    {
      "values": values_PD_1D,
      "labels": label_PD_1D,
      "domain": {'x': [0.0, 0.45], 'y': [0, 0.45]},
      "name": "PD_1D",
      "hoverinfo":"label+percent+name",
      "hole": .4,  
      "type": "pie"
    },     
    {
      "values": values_PD_2D,
      "labels": label_PD_2D,
      "textposition":"inside",
      "domain":{'x': [0.55, 1], 'y': [0, 0.45]},
      "name": "PD_2D",
      "hoverinfo":"label+percent+name",
      "hole": .4,  
      "type": "pie"
    },
     {
      "values": values_PD_3D,
      "labels": label_PD_3D,
      'domain': {'x': [0.0, 0.45], 'y': [0.55, 1]},
      "hoverinfo":"label+percent+name",
      "hole": .4,   
      "type": "pie"
    }  
  ],
  "layout": {
        "title":"Programming languages",
        "annotations": [
            {
                "font": {
                    "size": 20
                },
                "showarrow": False,
                "text": "PD_1D",
                "x": 0.12,
                "y": 0.5
            },
            {
                "font": {
                    "size": 20
                },
                "showarrow": False,
                "text": "PD_2D",
                "x": 0.73,
                "y": 0.5
                },
            {
                "font": {
                    "size": 20
                },
                "showarrow": False,
                "text": "PD_3D",
                "x": 0.12,
                "y": 1.1
                }
            ]
        }
    }

plotly.offline.iplot(fig, filename='donut')
25.07.2017

2

То, что я хотел, может быть достигнуто с помощью такого словаря макета:

layout = dict(height = 1200,
              width = 1000,
              autosize = False,
              title = 'Violent Crimes/PD by main cathegory',
              annotations= [{"font": {"size": 24},"showarrow": False,"text": "PD_1D","x": 0.14, "y": 0.82},
                            {"font": {"size": 24},"showarrow": False,"text": "PD_2D","x": 0.86, "y": 0.82},
                            {"font": {"size": 24},"showarrow": False,"text": "PD_3D","x": 0.14, "y": 0.48},
                            {"font": {"size": 24},"showarrow": False,"text": "PD_4D","x": 0.86, "y": 0.48},
                            {"font": {"size": 24},"showarrow": False,"text": "PD_5D","x": 0.14, "y": 0.13},
                            {"font": {"size": 24},"showarrow": False,"text": "PD_6D","x": 0.86, "y": 0.13}]

              )

В словаре макета параметры ширины и высоты контролируют размер подграфиков. домены x, y служат скорее отправной точкой для каждого подграфика и привязаны к верхнему пределу 1. Таким образом, вы не можете обеспечить хороший уровень детализации и интервал между подграфиками, используя только домены. См. прикрепленный экран печати Круговая диаграмма соответствующего размера

31.07.2017
  • Мы не закрываем отвеченные вопросы; вместо этого вы должны принять свой собственный ответ, чтобы он был полезен другим в будущем. 09.06.2020
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..