matplotlib scatterplot의 x, y 좌표에서 색상을 얻는 방법 (또는 색상이 있으면 간단한 yes/no 대답)이 있습니까?scatterplot Python에서 포인트 색상을 반환하는 방법
기본적으로 좌표 (x, y)를 지정하고 내 플롯의 해당 위치에 색칠 된 원이 있는지 알고 싶습니다.
도움이 될 것입니다.
matplotlib scatterplot의 x, y 좌표에서 색상을 얻는 방법 (또는 색상이 있으면 간단한 yes/no 대답)이 있습니까?scatterplot Python에서 포인트 색상을 반환하는 방법
기본적으로 좌표 (x, y)를 지정하고 내 플롯의 해당 위치에 색칠 된 원이 있는지 알고 싶습니다.
도움이 될 것입니다.
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
결정하려면 정직하지 않다. 문제는 데이터 좌표에 (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)
두 원에서 실제로 사용하므로 두 번째 포인트는 모든 원되지 않고 비어있는 배열이 인쇄되는 동안 두 색이 인쇄된다.
정말 고마워요. 이것이 내가 필요한 것입니다. – Ilze
나는 이것이 질문에서 의미하는 바가 아닌지 의심 스럽다. – ImportanceOfBeingErnest
좋아, 나는 그럴듯한 것으로 밝혀진다. – Jon