Лицевые цвета, не окрашивающие внутренность многоугольника, закрученного линиями объектов - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь сделать карту Нидерландов, где провинции заполнены каким-нибудь цветом. Я искал этот пост и этот пост для получения справки и примеров кода. За исключением случаев, когда они используют

lines = LineCollection(shpsegs,antialiaseds=(1,))
lines.set_facecolors(cm.jet(np.random.rand(1)))

, чтобы заполнить фигуры заданным цветом, это ничего не делает для меня. Я не могу понять, почему он ничего не делает для меня. Это не дает мне ошибки, и я также не вижу цвета в форме.

Я был бы очень признателен за помощь. Мой (почти) весь код ниже, я обрезал некоторые ненужные биты:

import shapefile
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib.collections import LineCollection
import numpy as np


##Importing shapefile and records
sf = shapefile.Reader("NLadmin/NLD_adm1")

records = sf.records()
for i in range(len(records)):
    print(str(i) + " - " + str(records[i][4]))

shapes = sf.shapes()
for i in range(len(shapes)):
    print(shapes[i].parts)


##Figure
fig = plt.figure()
ax = plt.axes()
ax.set_aspect(1.1541)
ax.set_xlim(3, 7.5)
ax.set_ylim(50.5, 54)

print("-------")

##Use the shapes and records
for shape, record in zip(list(sf.iterShapes()), records):
    number_points = len(shape.points)
    number_parts = len(shape.parts)

    for index in range(number_parts):
        startindex = shape.parts[index]

        if index < len(shape.parts)-1:
            endindex = shape.parts[index+1]
        else:   
            endindex = number_points

        shapesegment = shape.points[startindex:endindex]

        x_lon = []
        y_lat = []
        for index in range(len(shapesegment)):
            x_lon.append(shapesegment[index][0])
            y_lat.append(shapesegment[index][1])


        linelist = []
        for i in range(len(x_lon)):
            intermediatelist = []

            try:
                startxy = (x_lon[i], y_lat[i])
                endxy = (x_lon[i+1], y_lat[i+1])
            except:
                continue   

            intermediatelist.append(startxy)
            intermediatelist.append(endxy)
            linelist.append(intermediatelist)


        lines = LineCollection(linelist,antialiaseds=(1,))
        lines.set_facecolors('#e41a1c')
        lines.set_edgecolors('k')
        lines.set_linewidth(1)

        ax.add_collection(lines)


plt.show()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...