Пропорции графика при установке верхнего и нижнего пределов цветовой полосы - PullRequest
1 голос
/ 28 мая 2020

У меня есть таблица пропорций, которую я создаю для значений, которые выглядят примерно так: Proportions I want to plot

Затем я хочу создать шкалу цветов с верхним и нижним границы 1 и -1 соответственно.

event_y = (datetime.date.fromisoformat(start_date) + relativedelta(months = 2)).year

    cdict = {'green':  ((0.0, 0.0, 0.0),   # no red at 0
                  (0.5, 1.0, 1.0),   # all channels set to 1.0 at 0.5 to create white
                  (1.0, 0.8, 0.8)),  # set to 0.8 so its not too bright at 1

        'red': ((0.0, 0.8, 0.8),   # set to 0.8 so its not too bright at 0
                  (0.5, 1.0, 1.0),   # all channels set to 1.0 at 0.5 to create white
                  (1.0, 0.0, 0.0)),  # no green at 1

        'blue':  ((0.0, 0.0, 0.0),   # no blue at 0
                  (0.5, 1.0, 1.0),   # all channels set to 1.0 at 0.5 to create white
                  (1.0, 0.0, 0.0))   # no blue at 1
       }

# Create the colormap using the dictionary
    GnRd = colors.LinearSegmentedColormap('GnRd', cdict)

    fig, ax = plt.subplots(1, figsize=(10,10))
    ax.axis('off')
    ax.set_title(f'Change in Proportion of {race} Drivers Stopped By Service Area\n Event: {event} ({event_y})'.format(race,event,event_y), fontdict={'fontsize':'15','fontweight' : '3'})
    sm = plt.cm.ScalarMappable(cmap=GnRd, norm=plt.Normalize(vmin=-1, vmax=1,clip=True))
    fig.colorbar(sm)
    heat_diff.plot(column='prop', cmap=GnRd, linewidth=0.8, ax=ax, edgecolor='0.8')

ScalarMappable требует аргумента нормализации, который затем изменяет истинные значения, которые я рисую, есть ли способ сделать это без нормализации, чтобы истинные значения оставались неизменными? Если верхний и нижний пределы цветов равны 1 и отрицательному 1?

1 Ответ

0 голосов
/ 28 мая 2020

Geo Pandas изначально поддерживает палитру цветов, вам не нужно создавать свою собственную. Следующее должно работать.

GnRd = colors.LinearSegmentedColormap('GnRd', cdict)

fig, ax = plt.subplots(1, figsize=(10,10))
ax.axis('off')
ax.set_title(f'Change in Proportion of {race} Drivers Stopped By Service Area\n Event: {event} ({event_y})'.format(race,event,event_y), fontdict={'fontsize':'15','fontweight' : '3'})
heat_diff.plot(column='prop', cmap=GnRd, linewidth=0.8, ax=ax,
               edgecolor='0.8', vmin=-1, vmax=1, legend=True)

Я только что добавил vmin=-1, vmax=1, legend=True к .plot, где первые два ограничивают диапазон значений, а legend показывает шкалу цвета.

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