2012-09-17 2 views
1

나는 X 계열의 값에 대해 음모를 꾸미고 자하는 약 15 계열을 가지고있다.matplotlib가 해당 x 값의 값을 플로팅하는 것을 방지하기 위해 y 시리즈에 값을 넣을 수 있습니까?

그러나 내 시리즈의 일부 값에 대해서는 어떤 것도 그려지기를 원하지 않는다. 더미 길이로 사용할 수있는 값이 있나요? 그래서 시리즈 길이는 같지만 matplotlib는 그 점을 표시하지 않습니다.

예를 들어 내 x 축에 [1,2,3,4,5,6,7,8,9]이 있고 Y 축의 시리즈가 ['a', 'b', 'c', 'd', 'e', foo, 'g','h','i']인데 foo가 6에 대한 플롯을 사용하고 싶지 않은 경우 foo를 ' 음모를 꾸몄다.

x와 y 값이 datetimes임을 지적해야합니다. 필자가 필요한 정보가 될 것으로 기대하지는 않았지만, NaN이 수레를 플로팅하는 동안 작동하는 반면, datetimes에서는 작동하지 않는 것 같습니다.

답변

0

그래서이 문제를 해결하기 위해, 나는 더미 값으로 제구 시과을 사용하고, 생성

def find_indices(haystack, needle): 
    return [i for i,x in enumerate(haystack) if needle == x] 

def remove_at(xs, indices): 
    return [x for i,x in enumerate(xs) if i not in indices] 

그리고

nones_at = find_indices(y_values, None) 
x_values = remove_at(x_axis, nones_at) 
y_values = remove_at(y_values, nones_at) 
pyplot.plot(x_values, y_values) 
0

당신은 None 사용할 수 있습니다

>>> import matplotlib.pyplot as plt 
>>> plt.plot([1,2,None,4,5],[1.1,2.2,3.3,4.4,5.5],'ro') 
[<matplotlib.lines.Line2D object at 0x29f6d50>] 
>>> plt.show() 
>>> 
+0

아니요. 나는 plt.scatter를 사용하고 있습니다. 아무도 작동하지 않습니다. – Squidly

2

scatter는 무시됩니다 값 numpy.nan ("숫자가 아님").

>>> import matplotlib.pyplot as plt 
>>> from numpy import nan 
>>> x = range(5) 
>>> y = [10, nan, 15, 14, 12] 
>>> plt.scatter(x, y) 
>>> plt.show() 
+0

불행히도, 다른 값이 datetimes 일 때 무시하지 않습니다; 그것은 플로트에 정의되지 않은 토벌 날에 질식합니다. – Squidly

+1

np.nan을 사용해야한다는 것에 동의합니다. 또 다른 제안은 마스크 된 배열을 사용하는 것입니다. –

0

당신이 plot_date를 호출하고이 시리즈는 플롯 된 것처럼 축을 설정되지만, 데이터 포인트가 표시되지 않도록 음모를 숨 깁니다, visible=False 전달합니다.

관심이 있다면, 당신은 방법 multi_plot_data_with_dateshere 볼 수 있습니다 - 내가 설명한 것처럼 저도 같은 문제가 있었 믿고,이 구현은 트릭을 할 것으로 보인다에게.

관련 문제