Цветная карта для представления трех возможных результатов - PullRequest
0 голосов
/ 02 января 2019

Я использую Цветную карту colormap.YlOrRd, чтобы закрасить каждый полигон (район) на моей карте, основываясь на населении в этом районе.

Однако какую цветную карту вы бы порекомендовали, если бы я хотел заштриховать каждый район на основе трех возможных результатов - скажем, католика, пресвитерианства или англиканца.Или скажем, консерватор, либертарианец или социалист.Или женат, холост или разведен.У меня есть 5000 районов на карте, и я не хочу использовать точечные круговые диаграммы.

Это решение для двух возможных результатов:

enter image description here

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

Итак, допустим, мои данные организованы следующим образом:

                   RP SP PS
Jefferson Urban 1: 30 40 30   
Jefferson Urban 2: 40 40 20   
Jefferson Urban 3: 10 30 60   
Jefferson Urban 4:  5 20 75
Washington Ward 1: 80  0 20
Washington Ward 2: 90  5  5
Lincoln Park West: 10  5 85
Lincoln Park East: 10  0 90

Вот один тип решения для трех результатов, который я нашел: enter image description here, где карта заштрихована на основе самой большой партии в округе.Не совсем то, что я хочу, потому что вы не можете понять, как каждая вечеринка выступала на районном уровне.Возможно, лучше всего иметь три отдельные карты для каждой партии.

В настоящее время я закрашиваю каждый район в соответствии с плотностью населения следующим образом:

  colormap = cm.YlOrRd
  norm = colors.LogNorm(vmin=(min(population.values())), vmax=(max(population.values()))) 
  sm = plt.cm.ScalarMappable(cmap=colormap, norm=norm)
  sm.set_array([])

  for district in population:
      col = colormap(population[district]) 
      p = PolygonPatch(polygon[district],facecolor=col, edgecolor=col, zorder=2, lw=None, transform=ccrs.PlateCarree()) 
      ax.add_patch(p)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...