2015-02-18 2 views
1

У меня есть некоторые данные let x, y и z. Все - 1D массивов. Я сделал диаграмму рассеяния с z как цвет как;Matplotlib Цвет фильтра рассеяния (цветная панель)

import matplotlib.pyplot as plt 
plt.scatter(x,y,c=z,alpha = 0.2) 
plt.xlabel("X") 
plt.ylabel("Y") 
plt.ylim((1.2,1.5)) 
plt.colorbar() 

The z значений нормированы и ее между -1 к 1. Я приложил цифру ниже.

Вопрос у меня есть; Как я могу отфильтровать цвета, которые позволяют сказать, что точки, которые имеют значение цвета между -0.25, равны 0.25, исчезают из фигуры (например, установите цвет на белый). могут быть предоставлены

enter image description here

Значения x, y и z, если это необходимо, чтобы ответить на этот вопрос. Спасибо за ваше время.

+1

Маскированные массивы могут быть приятным вариантом: http://wiki.scipy.org/Cookbook/Matplotlib/Plotting_values_with_masked_arrays – cel

+1

Вы можете создать собственный цветной барабан или использовать тот, у которого уже есть значения блеска около 0 ('лето', возможно ?) – cphlewis

ответ

1
import matplotlib.pyplot as plt 
import numpy as np 
np.random.seed(42) 

# prepare random data 
stats = -1, 1, 200 
x = np.random.uniform(*stats) 
y = np.random.uniform(*stats) 
z = np.random.uniform(*stats) 

# mask unwanted data 
thresh = 0.4 
mask = np.abs(z) <= thresh 
x_ma = np.ma.masked_where(mask, x) 
y_ma = np.ma.masked_where(mask, y) 
z_ma = np.ma.masked_where(mask, z) 

И сделать прорисовку:

fig, (ax_left, ax_right) = plt.subplots(1, 2, figsize=(10, 4), 
             sharex=True, sharey=True) 
img_left = ax_left.scatter(x, y, c=z) 
fig.colorbar(img_left, ax=ax_left) 
img_right = ax_right.scatter(x_ma, y_ma, c=z_ma) 
fig.colorbar(img_right, ax=ax_right) 

дает следующий результат:

plot

Участок на правой стороне скрывает все точки, которые находятся ниже выбранного порога.

+0

В зависимости от того, что означает значения в масках, это беспокоит меня, поскольку, по-видимому, цветная панель подразумевает, что * может * быть значениями в [-0.4, 0.4], но * не *. Я бы отредактировал цветовой код, чтобы цветная панель была также белой в этом диапазоне. (Или, возможно, маскированные значения действительно не являются данными.) – cphlewis

Смежные вопросы