2017-04-03 1 views
3

matplotlib scatterplot의 x, y 좌표에서 색상을 얻는 방법 (또는 색상이 있으면 간단한 yes/no 대답)이 있습니까?scatterplot Python에서 포인트 색상을 반환하는 방법

기본적으로 좌표 (x, y)를 지정하고 내 플롯의 해당 위치에 색칠 된 원이 있는지 알고 싶습니다.

도움이 될 것입니다.

답변

0

get_color()를 사용할 수 있습니다. 예 :

a = plt.plot(x,c, color="blue", linewidth=2.0, linestyle="-") 
b = plt.plot(x,s, color="red", linewidth=2.0, linestyle="-") 

print a[0].get_color() 
print b[0].get_color() 

>>blue 
>>red 

아니면 작업을 변수에 반환 된 색상을 지정할 수 있습니다 : 위치 (xi,yi)에서 산란 원이있는 경우

color_a = a[0].get_color() 

if color_a == 'blue': 
    ..do something 
+0

나는 이것이 질문에서 의미하는 바가 아닌지 의심 스럽다. – ImportanceOfBeingErnest

+0

좋아, 나는 그럴듯한 것으로 밝혀진다. – Jon

1

결정하려면 정직하지 않다. 문제는 데이터 좌표에 (xi,yi)이 주어지고 원이 표시 좌표의 원으로 그려지는 것입니다. 즉 축 좌표계가 x 축과 y 축에 대해 다를 경우 표시 좌표의 원이 데이터 좌표의 타원이 될 수 있습니다.

Matplotlib에는 표시 좌표에 지정된 점이 아티스트의 범위 내에 있는지를 결정하는 몇 가지 기능이 있습니다. 이것을 사용하기 위해서는 먼저 캔버스를 그려야합니다. 그런 다음 마우스 이벤트를 위치 (xi,yi)에서 시뮬레이트 한 다음 분산 형에서 어떤 아티스트에 도달했는지 탐지 할 수 있습니다. 그런 다음 각 색상을 검색 할 수 있습니다.

import numpy as np; np.random.seed(0) 
import matplotlib.pyplot as plt 
import matplotlib.backend_bases 

x = np.random.rayleigh(size=10) 
y = np.random.normal(size=10) 
c = np.random.rand(10) 

fig, ax = plt.subplots() 
sc = ax.scatter(x,y,c=c, s=49, picker=True) 

fig.canvas.draw() 

def color_at_pos(xi,yi): 
    xi, yi = ax.transData.transform((xi,yi)) 
    me = matplotlib.backend_bases.LocationEvent("no", fig.canvas, xi, yi) 
    cont, ind = sc.contains(me) 
    return sc.cmap(sc.norm(sc.get_array()[ind["ind"]])) 

col = color_at_pos(1.25931,0.145889) 
print col 
col = color_at_pos(0.7,0.7) 
print col 

plt.show() 

여기서 첫번째 포인트 (1.25931,0.145889) 두 원에서 실제로 사용하므로 두 번째 포인트는 모든 원되지 않고 비어있는 배열이 인쇄되는 동안 두 색이 인쇄된다.

+0

정말 고마워요. 이것이 내가 필요한 것입니다. – Ilze

관련 문제