Используйте Python, чтобы сделать карту лучше: используйте Pyecharts, чтобы сделать интерактивную карту (1)

Python анализ данных визуализация данных

Сегодня начальник придумал прихоть и подумал, что скучно просто смотреть в эксель лист, поэтому ему пришлось нанести данные на карту, поэтому мы сегодня будем учиться, как нарисовать точечную диаграмму на карте, основной контент сегодня такой

  • Рисование с использованием географической информации, поставляемой с Curry
  • Обработка исключений

Затем, во втором выпуске, мы изучим, как импортировать информацию о широте и долготе.

Сегодня мы изменим библиотеку, а не изменим бренд Matplotlib, давайте попробуем потрясающую версию Echarts для Python.

Сначала давайте посмотрим на официальный пример

Очень круто, можно просто нарисовать точки разброса на карте, и добавить фильтр, который можно дергать

Давайте посмотрим на код официального примера:

from pyecharts import Geo

data = [
    ("海门", 9),("鄂尔多斯", 12),("招远", 12),("舟山", 12),("齐齐哈尔", 14),("盐城", 15),
    ("赤峰", 16),("青岛", 18),("乳山", 18),("金昌", 19),("泉州", 21),("莱西", 21),
    ("日照", 21),("胶南", 22),("南通", 23),("拉萨", 24),("云浮", 24),("梅州", 25),
    ("文登", 25),("上海", 25),("攀枝花", 25),("威海", 25),("承德", 25),("厦门", 26),
    ("汕尾", 26),("潮州", 26),("丹东", 27),("太仓", 27),("曲靖", 27),("烟台", 28),
    ("福州", 29),("瓦房店", 30),("即墨", 30),("抚顺", 31),("玉溪", 31),("张家口", 31),
    ("阳泉", 31),("莱州", 32),("湖州", 32),("汕头", 32),("昆山", 33),("宁波", 33),
    ("湛江", 33),("揭阳", 34),("荣成", 34),("连云港", 35),("葫芦岛", 35),("常熟", 36),
    ("东莞", 36),("河源", 36),("淮安", 36),("泰州", 36),("南宁", 37),("营口", 37),
    ("惠州", 37),("江阴", 37),("蓬莱", 37),("韶关", 38),("嘉峪关", 38),("广州", 38),
    ("延安", 38),("太原", 39),("清远", 39),("中山", 39),("昆明", 39),("寿光", 40),
    ("盘锦", 40),("长治", 41),("深圳", 41),("珠海", 42),("宿迁", 43),("咸阳", 43),
    ("铜川", 44),("平度", 44),("佛山", 44),("海口", 44),("江门", 45),("章丘", 45),
    ("肇庆", 46),("大连", 47),("临汾", 47),("吴江", 47),("石嘴山", 49),("沈阳", 50),
    ("苏州", 50),("茂名", 50),("嘉兴", 51),("长春", 51),("胶州", 52),("银川", 52),
    ("张家港", 52),("三门峡", 53),("锦州", 54),("南昌", 54),("柳州", 54),("三亚", 54),
    ("自贡", 56),("吉林", 56),("阳江", 57),("泸州", 57),("西宁", 57),("宜宾", 58),
    ("呼和浩特", 58),("成都", 58),("大同", 58),("镇江", 59),("桂林", 59),("张家界", 59),
    ("宜兴", 59),("北海", 60),("西安", 61),("金坛", 62),("东营", 62),("牡丹江", 63),
    ("遵义", 63),("绍兴", 63),("扬州", 64),("常州", 64),("潍坊", 65),("重庆", 66),
    ("台州", 67),("南京", 67),("滨州", 70),("贵阳", 71),("无锡", 71),("本溪", 71),
    ("克拉玛依", 72),("渭南", 72),("马鞍山", 72),("宝鸡", 72),("焦作", 75),("句容", 75),
    ("北京", 79),("徐州", 79),("衡水", 80),("包头", 80),("绵阳", 80),("乌鲁木齐", 84),
    ("枣庄", 84),("杭州", 84),("淄博", 85),("鞍山", 86),("溧阳", 86),("库尔勒", 86),
    ("安阳", 90),("开封", 90),("济南", 92),("德阳", 93),("温州", 95),("九江", 96),
    ("邯郸", 98),("临安", 99),("兰州", 99),("沧州", 100),("临沂", 103),("南充", 104),
    ("天津", 105),("富阳", 106),("泰安", 112),("诸暨", 112),("郑州", 113),("哈尔滨", 114),
    ("聊城", 116),("芜湖", 117),("唐山", 119),("平顶山", 119),("邢台", 119),("德州", 120),
    ("济宁", 120),("荆州", 127),("宜昌", 130),("义乌", 132),("丽水", 133),("洛阳", 134),
    ("秦皇岛", 136),("株洲", 143),("石家庄", 147),("莱芜", 148),("常德", 152),("保定", 153),
    ("湘潭", 154),("金华", 157),("岳阳", 169),("长沙", 175),("衢州", 177),("廊坊", 193),
    ("菏泽", 194),("合肥", 229),("武汉", 273),("大庆", 279)]

geo = Geo("全国主要城市空气质量", "data from pm2.5", title_color="#fff",
          title_pos="center", width=1200,
          height=600, background_color='#404a59')
attr, value = geo.cast(data)
geo.add("", attr, value, visual_range=[0, 200], visual_text_color="#fff",
        symbol_size=15, is_visualmap=True)
geo.render()

Код прост:

data = [ ("海门", 9),("鄂尔多斯", 12)]

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

geo = Geo("全国主要城市空气质量", "data from pm2.5", title_color="#fff",
          title_pos="center", width=1200,
          height=600, background_color='#404a59')

Заголовок, подзаголовок, цвет заголовка, позиция, размер и цвет фона определяются в гео, а для цвета используется # 404a59. Этот шестнадцатеричный метод выражения можно найти в Интернете. значение этого шестнадцатеричного числа.

Подробности можно посмотреть в официальном описании параметров в гео

attr, value = geo.cast(data)

Это должен быть метод преобразования формата данных, который поставляется с гео, который написан в официальном документе.

  • attr -> list
    Имя свойства
  • value -> list
    Значение, соответствующее свойству

Мы видим, что приведение разбивает кортеж на два списка: название места в списке атрибутов и значение в списке значений.

geo.add("", attr, value, visual_range=[0, 200], visual_text_color="#fff",
        symbol_size=15, is_visualmap=True)

Дополнение включает в себя детали на картинке, так что я просто скопирую официальную! ! имя легенды

  • attr -> list
    Имя свойства
  • value -> list
    Значение, соответствующее свойству
  • type -> str
    Тип легенды, 'scatter', 'effectScatter', 'heatmap' являются необязательными. По умолчанию «разброс»
  • maptype -> str
    тип карты. Поддержка Китая, мира, Аньхой, Макао, Пекин, Чунцин, Фуцзянь, Фуцзянь, Ганьсу, Гуандун, Гуанси, Гуанчжоу, Хайнань, Хэбэй, Хэйлунцзян, Хэнань, Хубэй, Хунань, Цзянсу, Цзянси, Цзилинь, Ляонин, Внутренняя Монголия, Нинся, Цинхай, Шаньдун, Шанхай, Шэньси, Шаньси, Сычуань, Тайвань, Тяньцзинь, Гонконг, Синьцзян, Тибет, Юньнань, Чжэцзян иКарта 363 городов второго уровня. Напоминание: при рисовании карт на уровне города слово «город» после названия города следует опускать.Например, не упоминайте «город» в городе Шицзячжуан, то есть «Шицзячжуан».
  • symbol_size -> int
    Размер фигурки маркера. По умолчанию 12
  • border_color -> str
    Цвет границы карты. По умолчанию "#111"
  • geo_normal_color -> str
    Цвет области карты в нормальном состоянии. По умолчанию "#323c48"
  • geo_emphasis_color -> str
    Цвет выделенной области карты. По умолчанию "#2a333d"
  • geo_cities_coords -> dict
    Определяемая пользователем широта и долгота области, аналогичная словарю, такому как {'Acheng': [126.58, 45.32]}, когда указан этот параметр, он перезапишет исходную предварительно сохраненную информацию о координатах области.
  • is_roam -> bool
    Включить ли масштабирование мышью и панорамирование. По умолчанию Истина
    Если вы хотите только включить масштабирование или панорамирование, вы можете установить его на «масштабирование» или «перемещение». Установите значение True, чтобы включить оба

Оглянуться назад очень просто, давайте закинем свои данные и посмотрим, сначала установим пакет

pip install pyecharts 

Однако, однако, однако~~~~

Все не так гладко! ! ! ! !

Почему я не могу отобразить карту~~~~? ? ? ? ,

Давайте решим первую проблему: почему у меня не отображается фон карты!

Продолжим листать официальные документы, оказывается: в новой библиотеке нет карты, ее надо устанавливать самому,

pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg

Хорошо, давайте продолжим, когда мы закончим установку!

нани,

Карта по-прежнему не отображается! ~! ~!

Наконец, после моих запросов и экспериментов, я наконец нашел решение! ! !

Удалил эти три пакета, переустановил и вырвало кровью

Хорошо, мы завершили первый этап обучения, изучили официальные примеры, а затем мы попробуем использовать нашу собственную таблицу широты и долготы excel и данные на следующем этапе, а затем сгенерируем