точность matplotlib для определенного столбца

Я строю график рассеяния со следующей частью:

cm = plt.cm.get_cmap('RdYlBu')

a = axes([.65, .6, .2, .2], axisbg='none')

sc=plt.scatter(x, y, c=z,s=500, marker='s',cmap=cm)

plt.colorbar(sc)

title('Density')

Данные z иногда оказываются очень близкими к однородным, т. е. 1,99, 2,01, 2,03, 1,98 и т. д. Это приводит к цветовому графику с другим значением z. Как я могу установить их все на 2, например, таким образом, чтобы цветовая карта была плоской?

вот та же проблема, что и с gnuplot, и я получил подсказку, которая решила проблему:

установить точность gnuplot для определенного столбца

Спасибо!


person physiker    schedule 17.03.2014    source источник
comment
Как и в другом вашем ответе, похоже, вы хотите numpy.round. Вы просто хотите округлить значения около 2? Например. [1.99, 2.01, 5.01] --› [2.0, 2.0, 5.01] Или вы хотите, чтобы все было округлено? (если вы хотите, чтобы все было округлено, просто используйте c=np.round(z))   -  person Joe Kington    schedule 17.03.2014
comment
Я хотел округлить их всех, идеально! Только одна проблема: как теперь установить метку цветовой полосы, например, 2.0?   -  person physiker    schedule 17.03.2014
comment
Ну, если все они имеют одно значение, зачем вам цветовая полоса? Чтобы установить метку цветовой полосы, используйте cbar = plt.colorbar(sc); cbar.set_label('2'). Однако, похоже, вам будет лучше пропустить numpy.round и вместо этого выполнить plt.scatter(..., vmin=0, vamx=4), чтобы установить минимум и максимум цветовой полосы. Предположительно, вы сравниваете его с другим набором данных?   -  person Joe Kington    schedule 17.03.2014