Nano Hash - криптовалюты, майнинг, программирование

Base R Choropleth: цвета не применяются к карте в соответствии с порядком интервалов/разрывов, что затрудняет чтение карты.

Я создал хороплет с базой R, но у меня проблемы с цветами. Во-первых, цвета не следуют тому же порядку, что и интервалы, а во-вторых, два интервала используют один и тот же цвет, что затрудняет чтение графика. Это происходит независимо от того, сколько цветов я использую. Также не имеет значения, использую ли я brewer.pal или базовые цвета. Вот карта с ее соответствующая легенда, иллюстрирующая проблему.

Ниже приведены операторы, которые я использую для создания графика после загрузки данных:

#Соответствующие пакеты:

library(dplyr)
    library(RColorBrewer)
    library(rgdal)

#создать вектор цветов

pop_colors <- brewer.pal(8,"Purples")

#создать перерывы/интервалы

pop_breaks <- c(0,20000,40000,60000,80000,100000,120000)

#применить разбивку к населению

cuts <- cut(cal_pop$Pop2016, pop_breaks, dig.lab = 6)

#создайте вектор с цветами по населению в соответствии с интервалом, к которому они принадлежат:

color_breaks <- pop_colors[findInterval(cal_pop$Pop2016,vec = pop_breaks)]

Создать картограмму

plot(cal_pop,col = color_breaks, main = "Calgary Population (2016)")

#создать легенду

legend("topleft", fill = color_breaks, legend = levels(cuts), title = "Population")

Я использовал команду readOGR() для чтения шейп-файла, на который я ссылаюсь здесь на случай, если кому-то это интересно. взглянув на данные.

Я был бы признателен за любой совет, который вы могли бы мне дать. Спасибо!


  • Предоставленный вами шейп-файл недействителен, поэтому проблема не может быть воспроизведена. Можете ли вы предоставить часть данных, используя dput()? 08.07.2020
  • Конечно, это данные о популяции: [1] 88539 68045 53586 63302 39747 110327 103904 117654 92397 74111 86443 114269 105409 40982 20056 43334 [17] 41769 63137774743434343434343434343434343434343434343434434434343434343434343434343434343434343443434343443434434343434434344343443434434434344343434343434343434н4н4н4н4нт. 08.07.2020
  • Length: [1] 41316.22 43102.14 31279.65 21491.84 34562.10 57902.87 54746.88 59176.86 41702.64 27987.53 26664.65 [12] 39140.56 43052.23 23300.63 22598.76 138748.31 199403.50 74400.42 117409.08 50646.82 476439.48 761550.90 08.07.2020
  • Area: [1] 48941780 75123001 23255709 20378821 25807650 66261535 78256982 135771194 91280690 43721875 [11] 28744884 66790819 76811291 15772621 11185083 477009662 765397605 181289084 302604998 40099320 [21] 5902129285 9114670885 08.07.2020
  • @knytt, конечно, это данные о популяции: [1] 88539 68045 53586 63302 39747 110327 103904 117654 92397 74111 86443 114269 105409 40982 20056 43334 [17] 41769 631377409823343434434343434343434343434444343443434434344343443434434344343443434434344343443434434343343334 [17] 41769 637774094098233334. 08.07.2020

Ответы:


1

Ваша ошибка в этой строке:

color_breaks <- pop_colors[findInterval(cal_pop$Pop2016,vec = pop_breaks)]

Я не могу прочитать ваш файл данных, поэтому воспользуюсь встроенным файлом из пакета sf.

library(sf)
nc <- readOGR(system.file("shapes/", package="maptools"), "sids")
str(nc@data)

colors <- brewer.pal(8,"Purples")

#create breaks/intervals    
sid_breaks <- c(0,2,4,6,8,10,12,20,60)

#apply breaks to population    
sid_cuts <- cut(nc$SID79, sid_breaks, dig.lab = 6, include=TRUE)

#create a vector with colors by population according to the interval they belong to:
sid_colors <- colors[sid_cuts]

#Create choropleth    
par(mar=c(0,0,0,0))
plot(nc, col = sid_colors)
legend("bottomleft", fill = colors, legend = levels(sid_cuts), nc=2, title = "SID (1979)", bty="n")

введите здесь описание изображения

08.07.2020
  • Спасибо за Ваш ответ. Я изменил заявление, но проблема не устранена. Как вы думаете, возможно ли, что проблема заключается в формате файла или активном операторе, о котором я не знаю? Я заметил, что цвета могут применяться в соответствии с порядком значений в векторе разрезов, а не в соответствии с уровнями указанного вектора, но я не уверен, как поступить, если это так. 08.07.2020
  • Ты выполнял мои команды? Я уже упоминал, в чем заключается ваша проблема. Ваша команда легенды также неверна. Вам нужно fill=pop_colors. 09.07.2020
  • Сначала я следовал вашим командам, но не понял, что моя легенда тоже не заполнилась. Большое спасибо, это сработало! 09.07.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..