Нежелательная цветовая палитра на графике

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

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

plt.close('all')
fig, axes = plt.subplots(nrows = 1, ncols = 1)
fig.set_facecolor('white')
axes.set_ylabel('$dz$ [$\AA$]')
axes.set_xlabel('Time [ns]')
axes.spines['right'].set_visible(False)
axes.spines['top'].set_visible(False)
axes.yaxis.set_ticks_position('left')
axes.xaxis.set_ticks_position('bottom')
axes.tick_params(direction='out')
#axes.set_title('N/A')
axes.set_ylim(-20,10)
axes.set_xlim(0, 90)
cmap = plt.get_cmap('plasma')
colors = [cmap(i) for i in np.linspace(0, 1, 9)]
# Make Color Bar ------------------------------------------------------
cax = 0
divider = make_axes_locatable(axes)
cax = divider.append_axes('right', size='5%', pad=0.1)
im = axes.imshow(np.linspace(1, 8.5, 100).reshape(10, 10), cmap='plasma')
fig.colorbar(im, cax=cax)
#----------------------------------------------------------------------
for i, dist in enumerate(dz):
    if i % 100 == 0:
        x = i / 1000 
        y = dist
        phval = final_pH_array[i]
        axes.plot(x, y, 'k.', markersize = 4 , color = colors[int(phval)], clip_on = False)
plt.savefig('plot.pdf')
plt.show()

Результаты выглядят следующим образом:

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

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

Любая помощь с этим будет здорово!


person Chemistry for Computers    schedule 27.11.2018    source источник
comment
Вы создаете это изображение в своем коде через строку im = axes.imshow(...). Поэтому вам нужно удалить эту строку. Очень похоже, что цветовая полоса, которую вы создаете, показывает гораздо больше цветов, которые вы используете; то есть вы используете только 8 разных цветов, верно? Итак, можно ли создать цветовую полосу только для этих 8 цветов?   -  person ImportanceOfBeingErnest    schedule 27.11.2018


Ответы (1)


Я думаю, что im.set_visible(False) должен добиться того, чего вы хотите.

Но, возможно, вам стоит взглянуть на plt.scatter. scatter возвращает PathCollection, который вы можете передать функции colorbar.

person SamProell    schedule 27.11.2018